You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
109 lines
2.9 KiB
C
109 lines
2.9 KiB
C
9 months ago
|
// MainFrm.h : interface of the CMainFrame class
|
||
|
//
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
#pragma once
|
||
|
|
||
|
class CMainFrame :
|
||
|
public CFrameWindowImpl<CMainFrame>,
|
||
|
public CUpdateUI<CMainFrame>,
|
||
|
public CMessageFilter, public CIdleHandler
|
||
|
{
|
||
|
public:
|
||
|
DECLARE_FRAME_WND_CLASS(NULL, IDR_MAINFRAME)
|
||
|
|
||
|
CView m_view;
|
||
|
|
||
|
virtual BOOL PreTranslateMessage(MSG* pMsg)
|
||
|
{
|
||
|
if(CFrameWindowImpl<CMainFrame>::PreTranslateMessage(pMsg))
|
||
|
return TRUE;
|
||
|
|
||
|
return m_view.PreTranslateMessage(pMsg);
|
||
|
}
|
||
|
|
||
|
virtual BOOL OnIdle()
|
||
|
{
|
||
|
return FALSE;
|
||
|
}
|
||
|
|
||
|
BEGIN_UPDATE_UI_MAP(CMainFrame)
|
||
|
UPDATE_ELEMENT(ID_VIEW_STATUS_BAR, UPDUI_MENUPOPUP)
|
||
|
END_UPDATE_UI_MAP()
|
||
|
|
||
|
BEGIN_MSG_MAP(CMainFrame)
|
||
|
MESSAGE_HANDLER(WM_CREATE, OnCreate)
|
||
|
MESSAGE_HANDLER(WM_DESTROY, OnDestroy)
|
||
|
COMMAND_ID_HANDLER(ID_APP_EXIT, OnFileExit)
|
||
|
COMMAND_ID_HANDLER(ID_FILE_OPTIONS, OnFileOption)
|
||
|
COMMAND_ID_HANDLER(ID_VIEW_STATUS_BAR, OnViewStatusBar)
|
||
|
COMMAND_ID_HANDLER(ID_APP_ABOUT, OnAppAbout)
|
||
|
CHAIN_MSG_MAP(CUpdateUI<CMainFrame>)
|
||
|
CHAIN_MSG_MAP(CFrameWindowImpl<CMainFrame>)
|
||
|
END_MSG_MAP()
|
||
|
|
||
|
// Handler prototypes (uncomment arguments if needed):
|
||
|
// LRESULT MessageHandler(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
|
||
|
// LRESULT CommandHandler(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
|
||
|
// LRESULT NotifyHandler(int /*idCtrl*/, LPNMHDR /*pnmh*/, BOOL& /*bHandled*/)
|
||
|
|
||
|
LRESULT OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
|
||
|
{
|
||
|
|
||
|
CreateSimpleStatusBar();
|
||
|
|
||
|
m_hWndClient = m_view.Create(m_hWnd);
|
||
|
UISetCheck(ID_VIEW_STATUS_BAR, 1);
|
||
|
|
||
|
// register object for message filtering and idle updates
|
||
|
CMessageLoop* pLoop = _Module.GetMessageLoop();
|
||
|
ATLASSERT(pLoop != NULL);
|
||
|
pLoop->AddMessageFilter(this);
|
||
|
pLoop->AddIdleHandler(this);
|
||
|
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
LRESULT OnDestroy(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& bHandled)
|
||
|
{
|
||
|
// unregister message filtering and idle updates
|
||
|
CMessageLoop* pLoop = _Module.GetMessageLoop();
|
||
|
ATLASSERT(pLoop != NULL);
|
||
|
pLoop->RemoveMessageFilter(this);
|
||
|
pLoop->RemoveIdleHandler(this);
|
||
|
|
||
|
bHandled = FALSE;
|
||
|
return 1;
|
||
|
}
|
||
|
|
||
|
LRESULT OnFileExit(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
|
||
|
{
|
||
|
PostMessage(WM_CLOSE);
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
LRESULT OnFileOption(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
|
||
|
{
|
||
|
COptionDlg dlg;
|
||
|
dlg.DoModal();
|
||
|
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
LRESULT OnViewStatusBar(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
|
||
|
{
|
||
|
BOOL bVisible = !::IsWindowVisible(m_hWndStatusBar);
|
||
|
::ShowWindow(m_hWndStatusBar, bVisible ? SW_SHOWNOACTIVATE : SW_HIDE);
|
||
|
UISetCheck(ID_VIEW_STATUS_BAR, bVisible);
|
||
|
UpdateLayout();
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
LRESULT OnAppAbout(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
|
||
|
{
|
||
|
CAboutDlg dlg;
|
||
|
dlg.DoModal();
|
||
|
return 0;
|
||
|
}
|
||
|
};
|