< ¸®¹Ù >
WTL¿¡¼ °ø¿ë ÄÁÆ®·ÑÀÇ ¸®¹Ù ÄÁÆ®·ÑÀ» CReBarCtrlT À̶ó°í ÇÏ´Â ÅÛÇø´ Ŭ·¡½º¿¡¼ ĸ½¶ÈÇϰí ÀÖ½À´Ï´Ù. ÅÛÇø´ Àμö¿¡´Â Ŭ·¡½º¸¦ ÁöÁ¤ÇÕ´Ï´Ù¸¸ ±× Ŭ·¡½º´Â CReBarCtrlT Ŭ·¡½ºÀÇ base class·Î¼ »ç¿ëµË´Ï´Ù. atlctrls.h Çì´õ¿¡¼´Â typedef¿¡ ÀÇÇØ ´ÙÀ½°ú °°ÀÌ ¼±¾ðµÇ°í ÀÖ½À´Ï´Ù.
|
// atlctrls.h typedef CReBarCtrlT<ATL::CWindow> CReBarCtrl; |
À̰ÍÀº CReBarCtrlŬ·¡½º´Â CWindowŬ·¡½ºÀÇ »ó¼Ó Ŭ·¡½ºÀÎ °ÍÀ» ÀǹÌÇÕ´Ï´Ù.
¡¡WTLÀÇ CReBarCtrlŬ·¡½º´Â MFCÀÇ µ¿¸íÀÇ Å¬·¡½º¿Í °ÅÀÇ °°Àº ¸â¹ö ÇÔ¼ö¸¦ ÁغñÇØ ÀÖ½À´Ï´Ù. ÀÌÇÏ¿¡ ³ªÅ¸³»´Â °ÍÀº CReBarCtrlŬ·¡½º¸¦ »ç¿ëÇÏ´Â ¿¹ÀÔ´Ï´Ù. ÇÁ·¹ÀÓ À©µµ¿ì¸¦ ÀÛ¼ºÇØ ¸®¹Ù¸¦ Ãß°¡ÇÏ°í ±× ¸®¹ÙÀÇ ¹êµå¿¡ Åø¹Ù¿Í combobox ÄÁÆ®·ÑÀ» Ãß°¡ÇÕ´Ï´Ù. ¸®¹ÙÀÇ ¹êµå¿¡ Ãß°¡µÈ Åø¹Ù´Â Ç¥½Ã/ºñÇ¥½Ã¸¦ º¯È¯µÇµµ·Ï ÇÕ´Ï´Ù.

|
// stdafx.h #include <atlbase.h> #include <atlapp.h> extern CAppModule _Module; #include <atlwin.h> #include <atlcrack.h> #include <atlmisc.h> #include <atlctrls.h> #include <atlframe.h> |
|
// mainfrm.h class CMainFrame : public CFrameWindowImpl<CMainFrame>, public CUpdateUI<CMainFrame>, public CMessageFilter, public CIdleHandler { public:
DECLARE_FRAME_WND_CLASS(NULL, IDR_MAINFRAME) enum { IDC_COMBO_REBAR = 1001 }; CComboBox
m_combo_rebar; virtual
BOOL PreTranslateMessage(MSG* pMsg){ return CFrameWindowImpl<CMainFrame>::PreTranslateMessage(pMsg); } virtual
BOOL OnIdle(){ UIUpdateToolBar(); 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){ // ¸®¹ö¸¦ ÀÛ¼º CreateSimpleReBar(); // Åø¹Ù¸¦ ÀÛ¼ºÇØ ¹êµå¿¡ Ãß°¡
HWND hToolBar = CreateSimpleToolBarCtrl(m_hWnd,
IDR_MAINFRAME, FALSE, ATL_SIMPLE_TOOLBAR_PANE_STYLE); AddSimpleReBarBand(hToolBar); UIAddToolBar(hToolBar); UISetCheck(ID_MENUITEM_TOOLBAR, 1); // combobox¸¦ ÀÛ¼ºÇØ ¹êµå¿¡
Ãß°¡ m_combo_rebar.Create(m_hWnd, CRect(0, 0, 100, 100), NULL,
WS_CHILD | WS_VISIBLE | WS_VSCROLL | CBS_DROPDOWNLIST, 0,
IDC_COMBO_REBAR); m_combo_rebar.SetFont(AtlGetDefaultGuiFont()); m_combo_rebar.AddString(_T("¾ÆÀÌÅÛ
1")); m_combo_rebar.AddString(_T("¾ÆÀÌÅÛ
2")); AddSimpleReBarBand(m_combo_rebar); // ¸®¹öÀÇ »çÀÌÁ Á¶Á¤ SizeSimpleReBarBands(); // ¸Þ½ÃÁö ·çÇÁ¿¡ ¸Þ¼¼Áö ÇÊÅÍ¿Í
¾ÆÀ̵¹ Çڵ鷯¸¦ Ãß°¡ 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); rebar.ShowBand(nBandIndex, bVisible); UISetCheck(ID_MENUITEM_TOOLBAR, bVisible); UpdateLayout(); } void OnMenuExit(UINT uNotifyCode, int nID, HWND hWndCtl){ PostMessage(WM_CLOSE); } }; |
|
// app.cpp #include "stdafx.h" #include "resource.h" #include "mainfrm.h" CAppModule _Module; int WINAPI _tWinMain(HINSTANCE
hInstance, HINSTANCE, LPTSTR lpCmdLine,
int nCmdShow) { HRESULT hRes = ::CoInitialize(NULL); ATLASSERT(SUCCEEDED(hRes)); ::DefWindowProc(NULL,
0, 0, 0L); AtlInitCommonControls(ICC_COOL_CLASSES
| ICC_WIN95_CLASSES); hRes
= _Module.Init(NULL, hInstance); ATLASSERT(SUCCEEDED(hRes)); int nRet = 0; // BLOCK: ¾îÇø®ÄÉÀÌ¼Ç ½ÇÇà { CMessageLoop theLoop; _Module.AddMessageLoop(&theLoop); CMainFrame wnd; wnd.CreateEx(); wnd.ShowWindow(nCmdShow); wnd.UpdateWindow(); nRet = theLoop.Run(); _Module.RemoveMessageLoop(); } _Module.Term(); ::CoUninitialize(); return nRet; } |
¡¡¿ì¼± µµ±¸ ¸ðÀ½ÀÇ Åé ·¹º§¿¡ [Ç¥½Ã]¸¦ ÀÛ¼ºÇÏ°í ±× ¾Æ·¡¿¡ [Åø¹Ù] ¸Þ´º ¾ÆÀÌÅÛÀ» Ãß°¡ÇÕ´Ï´Ù. ÀÌ [Åø¹Ù]¿¡´Â ID_MENUITEM_TOOLBAR ¶ó°í ÇÏ´Â ID¸¦ ¼³Á¤ÇÕ´Ï´Ù.

¡¡´ÙÀ½À¸·Î stdafx.h ¿¡¼´Â CReBarCtrl Ŭ·¡½º¸¦ »ç¿ëÇϱâ À§Çؼ atlctrls.h Çì´õ¸¦ Æ÷ÇÔ ÇÕ´Ï´Ù.
¡¡CMainFrame Ŭ·¡½º¿¡¼´Â ÀϹÝÀûÀÎ ÇÁ·¹ÀÓ À©µµ¿ì¸¦ ÀÛ¼ºÇÕ´Ï´Ù. WM_CREATE ¸Þ¼¼Áö Çڵ鷯¿¡¼´Â ¿ì¼± CreateSimpleReBar()À» È£ÃâÇØ ¸®¹Ù¸¦ ÀÛ¼ºÇÕ´Ï´Ù. À̰Ϳ¡ ÀÇÇØ ÇÁ·¹ÀÓ À©µµ¿ìÀÇ ¸â¹ö º¯¼öÀÎ m_hWndToolBar¿¡ ¸®¹ÙÀÇ ÇÚµéÀÌ ¼³Á¤µË´Ï´Ù. ´ÙÀ½¿¡ Åø¹Ù ÄÁÆ®·Ñ°ú combobox ÄÁÆ®·ÑÀ» ÀÛ¼ºÇÏ°í °¢°¢ ¸®¹öÀÇ ¹êµå¿¡ Ãß°¡ÇÕ´Ï´Ù.
¡¡´ÙÀ½À¸·Î ¸Þ´º ¾ÆÀÌÅÛ [Åø¹Ù](ID£ºID_MENUITEM_TOOLBAR) ¿ëÀÇ Ä¿¸àµå ¸Þ¼¼Áö Çڵ鷯¸¦ Ãß°¡ÇÕ´Ï´Ù. ÀÌ Çڵ鷯¿¡¼´Â Á¤Àû º¯¼ö bVisible¿¡ ÀÇÇØ Åø¹ÙÀÇ °¡½Ã »óŸ¦ º¸°ü À¯ÁöÇϸç CReBarCtrl Ŭ·¡½ºÀÇ ¸â¹ö ÇÔ¼öÀÎ ShowBand()·Î °¡½Ã »óŸ¦ »õ·Î ¹Ù²Ù°í ÀÖ½À´Ï´Ù. µ¡ºÙ¿© ÀÌ Çڵ鷯ÀÇ ÄÚµå´Â
ATL/WTL AppWizard ÀÌ Ãâ·ÂÇÏ´Â °Í°ú °ÅÀÇ °°½À´Ï´Ù.
¡¡¸¶Áö¸·À¸·Î _tWinMain() ¿¡¼ ICC_COOL_CLASSES Ç÷¡±×¸¦ ÁöÁ¤ÇØ AtlInitCommonControls()¸¦ È£ÃâÇÕ´Ï´Ù. À̰Ϳ¡ ÀÇÇØ ¸®¹Ù ÄÁÆ®·ÑÀÌ »ç¿ë °¡´ÉÇÏ°Ô µË´Ï´Ù.