|
// mainfrm.h
class CMainFrame : public CFrameWindowImpl<CMainFrame>,
public CUpdateUI<CMainFrame>, public CMessageFilter,
public CIdleHandler
{
public:
DECLARE_FRAME_WND_CLASS(NULL, IDR_MAINFRAME)
CCommandBarCtrl
m_wndCmdBar;
virtual BOOL PreTranslateMessage(MSG*
pMsg){
return CFrameWindowImpl<CMainFrame>::PreTranslateMessage(pMsg);
}
virtual BOOL OnIdle(){
UIUpdateToolBar();
UIUpdateStatusBar();
return FALSE;
}
BEGIN_UPDATE_UI_MAP(CMainFrame)
UPDATE_ELEMENT(ID_MENUITEM_TOOLBAR, UPDUI_MENUPOPUP)
END_UPDATE_UI_MAP()
BEGIN_MSG_MAP_EX(CMainFrame)
MSG_WM_CREATE(OnCreate)
COMMAND_ID_HANDLER_EX(ID_MENUITEM_TOOLBAR, OnMenuToolbar)
COMMAND_ID_HANDLER_EX(ID_APP_EXIT, OnMenuExit)
CHAIN_MSG_MAP(CUpdateUI<CMainFrame>)
CHAIN_MSG_MAP(CFrameWindowImpl<CMainFrame>)
END_MSG_MAP()
LRESULT OnCreate(LPCREATESTRUCT lpcs){
// ÄÚ¸Çµå ¹Ù¸¦ ÀÛ¼º
HWND hWndCmdBar = m_wndCmdBar.Create(m_hWnd,
rcDefault, NULL,
ATL_SIMPLE_CMDBAR_PANE_STYLE);
// ±âÁ¸ÀÇ µµ±¸¸ðÀ½À» ¾ÆÅ¿Ä¡
m_wndCmdBar.AttachMenu(GetMenu());
// ¸Þ´º ¾ÆÀÌÅÛ¿¡ °ü·ÃÁöÀ»
¼ö ÀÖ¾ú´ø Åø¹ÙÀÇ È»óÀ» ·Îµå
m_wndCmdBar.LoadImages(IDR_MAINFRAME);
// ±âÁ¸ÀÇ µµ±¸¸ðÀ½À» »èÁ¦
SetMenu(NULL);
// Åø¹Ù¸¦ ÀÛ¼º
HWND hWndToolBar = CreateSimpleToolBarCtrl(m_hWnd,
IDR_MAINFRAME, FALSE, ATL_SIMPLE_TOOLBAR_PANE_STYLE);
UIAddToolBar(hWndToolBar);
// ¸®¹ö¸¦ ÀÛ¼ºÇØ , ÄÚ¸Çµå ¹Ù¿Í Åø¹Ù¸¦ ¹êµå¿¡ Ãß°¡
CreateSimpleReBar(ATL_SIMPLE_REBAR_NOBORDER_STYLE);
AddSimpleReBarBand(hWndCmdBar);
AddSimpleReBarBand(hWndToolBar,
NULL, TRUE);
// »óÅ ¹Ù¸¦ ÀÛ¼º
CreateSimpleStatusBar();
UIAddStatusBar(m_hWndStatusBar);
UISetCheck(ID_MENUITEM_TOOLBAR, true);
// ¸Þ½ÃÁö ·çÇÁ¿¡ ¸Þ¼¼Áö
ÇÊÅÍ¿Í ¾ÆÀ̵¹ Çڵ鷯¸¦ Ãß°¡
CMessageLoop* pLoop = _Module.GetMessageLoop();
pLoop->AddMessageFilter(this);
pLoop->AddIdleHandler(this);
return 0;
}
void OnMenuToolbar(UINT
uNotifyCode, int nID, HWND hWndCtl){
static BOOL bVisible
= TRUE;
bVisible = !bVisible;
CReBarCtrl rebar = m_hWndToolBar;
int nBandIndex
= rebar.IdToIndex(ATL_IDW_BAND_FIRST + 1);
rebar.ShowBand(nBandIndex, bVisible);
UISetCheck(ID_MENUITEM_TOOLBAR, bVisible);
UpdateLayout();
}
void OnMenuExit(UINT
uNotifyCode, int nID, HWND hWndCtl){
PostMessage(WM_CLOSE);
}
};
|