📄 mainfrm.cpp
字号:
// MainFrm.cpp : implementation of the CMainFrame class
//
#include "stdafx.h"
#include "TestLib.h"
#include "MainFrm.h"
#include "TestLibView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMainFrame
IMPLEMENT_DYNAMIC(CMainFrame, CCJMDIFrameWnd)
BEGIN_MESSAGE_MAP(CMainFrame, CCJMDIFrameWnd)
//{{AFX_MSG_MAP(CMainFrame)
ON_WM_CREATE()
ON_COMMAND(ID_HIDEORSHOW, OnHideorshow)
ON_COMMAND(ID_SWITCH, OnSwitch)
ON_COMMAND(ID_WND_INFO1, OnWndInfo)
ON_WM_LBUTTONDOWN()
ON_WM_LBUTTONUP()
ON_WM_MOUSEMOVE()
ON_COMMAND(ID_TAB_VIEW, OnTabView)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
static UINT indicators[] =
{
ID_SEPARATOR, // status line indicator
ID_INDICATOR_CAPS,
ID_INDICATOR_NUM,
ID_INDICATOR_SCRL,
};
/////////////////////////////////////////////////////////////////////////////
// CMainFrame construction/destruction
CMainFrame::CMainFrame()
{
m_bWorkspace=0; //工作台加载标志
m_numDoc=0; //文档计数
m_bIsCatchMouseDown = false;
m_bChildTool=0;
}
CMainFrame::~CMainFrame()
{
}
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
int rtn =-1;
if (CCJMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
goto MainFrame_Create_END;
//{{m_wndToolBar、m_wndStatusBar、m_wndZoomBar
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
goto MainFrame_Create_END;
if (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
goto MainFrame_Create_END;
if (!m_wndZoomBar.Create(this) ||
!m_wndZoomBar.LoadToolBar(IDR_ZOOM_BAR))
goto MainFrame_Create_END;
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
m_wndZoomBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar,AFX_IDW_DOCKBAR_TOP);
DockControlBarLeftOf((CCJControlBar *)&m_wndZoomBar,(CCJControlBar *)&m_wndToolBar);
//}}
//{{m_wndWorkspace
if( !m_wndWorkspace.Create(this, ID_VIEW_WORKSPACE,
_T("Workspace"), CSize(200,100), CBRS_LEFT ))
goto MainFrame_Create_END;
m_wndWorkspace.EnableDockingOnSizeBar( CBRS_ALIGN_ANY);
m_wndWorkspace.EnableDocking(CBRS_ALIGN_ANY);
EnableDockingSizeBar(CBRS_ALIGN_ANY);
DockSizeBar(&m_wndWorkspace );
//}}
m_toolTip.Create(this);
//{{m_wndDynHelpView
m_wndDynHelpView.Create(this,ID_DYNHELP_VIEWBAR,"动态帮助窗口",CSize(200,200),WS_CHILD | CBRS_RIGHT,FALSE);
m_wndDynHelpView.EnableFlatLook(TRUE);
m_wndDynHelpView.SetOwner(this);
m_wndDynHelpView.EnableDockingOnSizeBar(CBRS_ALIGN_ANY);
DockSizeBar(&m_wndDynHelpView);
m_wndDynHelpView.ShowWindow(SW_HIDE);
//}}
RecalcLayout();
rtn=1;
MainFrame_Create_END:
return(rtn);
}
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
BOOL rtn;
if (CMDIFrameWnd::OnCreateClient(lpcs, pContext))
rtn=m_wndMdiClient.SubclassWindow(m_hWndMDIClient);
else
rtn=FALSE;
return(rtn);
}
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
BOOL rtn;
rtn=CCJMDIFrameWnd::PreCreateWindow(cs);
return(rtn);
}
/////////////////////////////////////////////////////////////////////////////
// CMainFrame diagnostics
#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
CCJMDIFrameWnd::AssertValid();
}
void CMainFrame::Dump(CDumpContext& dc) const
{
CCJMDIFrameWnd::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CMainFrame message handlers
void CMainFrame::OnHideorshow()
{
// TODO: Add your command handler code here
}
void CMainFrame::OnSwitch()
{
m_wndWorkspace.SetActiveView(1);
}
LRESULT CMainFrame::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
return(CCJMDIFrameWnd::WindowProc(message,wParam,lParam));
}
void CMainFrame::OnWndInfo()
{
m_bIsCatchMouseDown = true;
SetCursor(LoadCursor(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDC_TARGET)));
SetCapture();
}
void CMainFrame::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
TestEnterMouseDown(nFlags, point);
CCJMDIFrameWnd::OnLButtonDown(nFlags, point);
}
void CMainFrame::OnLButtonUp(UINT nFlags, CPoint point)
{
TestUpMouseUp();
m_GetWinInfo.EraseLastWindow();
CCJMDIFrameWnd::OnLButtonUp(nFlags, point);
}
void CMainFrame::TestEnterMouseDown(UINT nFlags, CPoint point)
{
if(m_bIsCatchMouseDown)
return;
if(IsInMouseDown(point))
{
//m_GetWinInfo.Reset();
m_bIsCatchMouseDown = true;
SetCursor(LoadCursor(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDC_TARGET)));
SetCapture();
}
}
void CMainFrame::TestUpMouseUp()
{
m_bIsCatchMouseDown = false;
SetCursor(NULL);
ReleaseCapture();
}
bool CMainFrame::IsInMouseDown(CPoint point)
{
static CPoint ptMouse;
static CRect rtMouseDown;
ptMouse = point;
ClientToScreen(&ptMouse);
if(rtMouseDown.PtInRect(ptMouse))
return true;
else
return false;
}
void CMainFrame::GetCatchPoint(CPoint point)
{
static CPoint ptMouse;
static CWnd *pwndGetWindow;
static CString cszWindowText;
static char szWindowClass[100] = {0};
static CDC *pDc;
static CRect rect;
static CPen pePen(PS_SOLID, 4, RGB(0,0,0));
pwndGetWindow = NULL;
if(!m_bIsCatchMouseDown)
return;
ptMouse = point;
ClientToScreen(&ptMouse);
pwndGetWindow = WindowFromPoint(ptMouse);
if(pwndGetWindow)
{
CPen *pOldPen = NULL;
pwndGetWindow->GetWindowText(cszWindowText);
szWindowClass[0] = '0';
GetClassName(pwndGetWindow->GetSafeHwnd(), szWindowClass, 100);
}
}
void CMainFrame::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if(m_bIsCatchMouseDown)
{
m_GetWinInfo.GetWindowFromCursorInfo();
m_szWindowClassName =m_GetWinInfo.m_WinInfo.szWindowClassName;
m_szWindowCaption =m_GetWinInfo.m_WinInfo.szWindowCaption;
m_cszhWnd.Format("%x", m_GetWinInfo.m_WinInfo.hWnd);
ATOM atom = (ATOM)GetClassLong(m_GetWinInfo.m_WinInfo.hWnd, GCW_ATOM);
m_cszATOM.Format("%x", atom);
CString str=m_szWindowClassName+":"+m_szWindowCaption+":"+m_cszhWnd+":"+m_cszATOM;
SetWindowText(str);
//WriteAtomIndexFile(m_GetWinInfo.m_WinInfo.szWindowClassName, atom);
}
CCJMDIFrameWnd::OnMouseMove(nFlags, point);
}
int CMainFrame::WriteAtomIndexFile(char szControlName[], long lAtom)
{
static char szAtom[10] = {0};
memset(szAtom, 0, sizeof(szAtom));
sprintf(szAtom, "0x%x", lAtom);
_strupr(szAtom);
return WritePrivateProfileString("AtomIndexFile", szControlName, szAtom, "c:\\AtomIndex.ini");
}
void CMainFrame::OnTabView()
{
CMDIChildWnd* pActiveChild=(CMDIChildWnd*)MDIGetActive();
CDocument* pDoc;
if(pActiveChild==NULL||(pDoc=pActiveChild->GetActiveDocument())==NULL)
{
AfxMessageBox(AFX_IDP_COMMAND_FAILURE);
return;
}
CDocTemplate* pTemplate =((CTestLibApp *)AfxGetApp())->m_pDocTemplate1;
ASSERT_VALID(pTemplate);
CCJFrameWnd* pFrame=(CCJFrameWnd *)pTemplate->CreateNewFrame(pDoc,pActiveChild);
if(pFrame==NULL)
return;
pTemplate->InitialUpdateFrame(pFrame,pDoc);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -