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

|
// 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_PAGER_BAR = 1001 }; CPagerCtrl
m_pager_bar; CSize
m_sizeToolbar; // Åø¹ÙÀÇ »çÀÌÁî virtual
BOOL PreTranslateMessage(MSG* pMsg){ return CFrameWindowImpl<CMainFrame>::PreTranslateMessage(pMsg); } virtual
BOOL OnIdle(){ UIUpdateToolBar(); return FALSE; } BEGIN_UPDATE_UI_MAP(CMainFrame) // ¿£Æ®¸® ¾øÀ½ END_UPDATE_UI_MAP() BEGIN_MSG_MAP_EX(CMainFrame)
MSG_WM_CREATE(OnCreate)
NOTIFY_HANDLER_EX(IDC_PAGER_BAR, PGN_CALCSIZE, OnPagerCalcsize)
NOTIFY_HANDLER_EX(IDC_PAGER_BAR, PGN_SCROLL, OnPagerScroll)
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(); // pager ÄÁÆ®·ÑÀ» ÀÛ¼º m_pager_bar.Create(m_hWndToolBar,
NULL, NULL,
WS_CHILD | WS_VISIBLE | PGS_HORZ, 0, IDC_PAGER_BAR); // Åø¹Ù¸¦ ÀÛ¼º
HWND hWndToolBar = CreateSimpleToolBarCtrl(m_pager_bar.m_hWnd,
IDR_MAINFRAME, FALSE, ATL_SIMPLE_TOOLBAR_PANE_STYLE); UIAddToolBar(hWndToolBar); // Åø¹ÙÀÇ »çÀÌÁ Ãëµæ ::SendMessage(hWndToolBar,
TB_GETMAXSIZE, 0, (LPARAM)&m_sizeToolbar); m_pager_bar.MoveWindow(0, 0, m_sizeToolbar.cx,
m_sizeToolbar.cy); m_pager_bar.SetChild(hWndToolBar); m_pager_bar.SetBkColor(RGB(240, 240, 255)); AddSimpleReBarBand(m_pager_bar.m_hWnd,
_T("pager ÷ºÎ Åø¹Ù")); // »óÅ ¹Ù¸¦ ÀÛ¼º CreateSimpleStatusBar(); // ¸Þ½ÃÁö ·çÇÁ¿¡ ¸Þ¼¼Áö ÇÊÅÍ¿Í
¾ÆÀ̵¹ Çڵ鷯¸¦ Ãß°¡ CMessageLoop* pLoop = _Module.GetMessageLoop(); pLoop->AddMessageFilter(this); pLoop->AddIdleHandler(this); return 0; } LRESULT OnPagerCalcsize(LPNMHDR pnmh){ LPNMPGCALCSIZE
pCalcSize = (LPNMPGCALCSIZE)pnmh; switch(pCalcSize->dwFlag){ case PGF_CALCWIDTH:
pCalcSize->iWidth
= m_sizeToolbar.cx;
break; } return 0; } LRESULT OnPagerScroll(LPNMHDR pnmh){
LPNMPGSCROLL pScroll = (LPNMPGSCROLL)pnmh; switch(pScroll->iDir){ case PGF_SCROLLLEFT: case PGF_SCROLLRIGHT: case PGF_SCROLLUP: case PGF_SCROLLDOWN:
pScroll->iScroll
= 10;
break; } return 0; } void OnMenuExit(UINT uNotifyCode, int nID, HWND hWndCtl){ PostMessage(WM_CLOSE); } }; |
|
// Control.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_PAGESCROLLER_CLASS); 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; } |
¡¡¿ì¼± stdafx.h ¿¡¼´Â CPagerCtrl Ŭ·¡½º¿Í ÇÁ·¹ÀÓ À©µµ¿ì¸¦ »ç¿ëÇϱâ À§Çؼ atlctrls.h Çì´õ¿Í atlframe.h Çì´õ¸¦ Æ÷ÇÔ ÇÕ´Ï´Ù.
¡¡CMainFrame Ŭ·¡½º¿¡¼´Â ÀϹÝÀûÀÎ ÇÁ·¹ÀÓ À©µµ¿ì¸¦ ÀÛ¼ºÇÏ´Â °Í¿¡ ´õÇØ pager ÄÁÆ®·Ñ¿ëÀ¸·Î ID(IDC_PAGER_BAR) ¸¦ Á¤ÀÇÇØ CPagerCtrl Ŭ·¡½ºÀÇ ÀνºÅϽº¸¦ ¸â¹ö º¯¼ö·Î¼ ¼±¾ðÇÕ´Ï´Ù. À̰ÍÀ» »ç¿ëÇϱâ À§Çؼ´Â WM_CREATE ¸Þ¼¼Áö Çڵ鷯·Î Create()¸¦ È£ÃâÇØ ÀÛ¼ºÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. ±×¸®°í Åø¹ÙÀÇ »çÀÌÁ ³ªÅ¸³»´Â CSize Ŭ·¡½ºÀÇ ÀνºÅϽºµµ ¸â¹ö º¯¼ö·Î¼ ¼±¾ðÇØ µÓ´Ï´Ù.
¡¡´ÙÀ½¿¡ WM_CREATE
¸Þ¼¼Áö Çڵ鷯·Î ¿ì¼± CreateSimpleReBar()À» È£ÃâÇØ ¸®¹ö¸¦ ÀÛ¼ºÇÕ´Ï´Ù. ´ÙÀ½¿¡ ¸®¹ö¸¦ ºÎ¸ð·Î¼ Áï Create()ÀÇ Á¦1Àμö¿¡ ¸®¹öÀÇ ÇÚµém_hWndToolBarÀ» ÁöÁ¤ÇØ pager ÄÁÆ®·ÑÀ» ÀÛ¼ºÇÕ´Ï´Ù. °Ô´Ù°¡ pager
ÄÁÆ®·ÑÀ» ºÎ¸ð·Î¼ Åø¹Ù¸¦ ÀÛ¼ºÇÕ´Ï´Ù. ÀÌ ¶§ ½ºÅ¸ÀϷμ CCS_NORESIZE¸¦ ÁöÁ¤ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. (ATL_SIMPLE_TOOLBAR_PANE_STYLE ¿¡´Â CCS_NORESIZE ½ºÅ¸ÀÏÀÌ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù.) ´ÙÀ½À¸·Î pager
ÄÁÆ®·ÑÀÇ »çÀÌÁ Åø¹Ù¿Í °°Àº »çÀÌÁî·Î ÇØ SetChild()¿¡ Åø¹ÙÀÇ ÇÚµéÀ» ÁöÁ¤ÇÏ´Â °Í¿¡ µû¶ó Åø¹Ù¸¦ pager ÄÁÆ®·ÑÀÇ ÀÚ½ÄÀ¸·Î ¼³Á¤ÇÕ´Ï´Ù. ±×¸®°í SetBkColor¿¡ ÀÇÇØ pager ÄÁÆ®·ÑÀÇ »öÀ» ÁöÁ¤ÇØ ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô ÀÛ¼ºÇÑ pager ÄÁÆ®·ÑÀ»AddSimpleReBarBand¿¡ ÀÇÇØ ¸®¹ö¿¡ Ãß°¡ÇÕ´Ï´Ù.
¡¡´ÙÀ½¿¡ ÅëÁö Äڵ尡 PGN_CALCSIZEÀÇ pager ÄÁÆ®·Ñ¿ë ÅëÁö ¸Þ¼¼Áö Çڵ鷯¸¦ Ãß°¡ÇÕ´Ï´Ù. ÀÌ Çڵ鷯¿¡¼´Â pager ÄÁÆ®·ÑÀÇ »çÀÌÁ Åø¹ÙÀÇ Æø°ú °°Àº »çÀÌÁî·Î ¼³Á¤ÇÕ´Ï´Ù. ÀÌ Çڵ鷯´Â ÇʼöÀÔ´Ï´Ù.
¡¡´ÙÀ½¿¡ ÅëÁö Äڵ尡 PGN_SCROLLÀÇ pager ÄÁÆ®·Ñ¿ë ÅëÁö ¸Þ¼¼Áö Çڵ鷯¸¦ Ãß°¡ÇÕ´Ï´Ù. ÀÌ Çڵ鷯¿¡¼´Â pager ÄÁÆ®·ÑÀÇ ½ºÅ©·ÑÄ¡¸¦ ¼³Á¤ÇÕ´Ï´Ù.
¡¡¸¶Áö¸·À¸·Î _tWinMain()¿¡¼ ICC_PAGESCROLLER_CLASS Ç÷¡±×¸¦ ÁöÁ¤ÇØ AtlInitCommonControls()¸¦ È£ÃâÇÕ´Ï´Ù. À̰Ϳ¡ ÀÇÇØ pager ÄÁÆ®·ÑÀÌ »ç¿ë °¡´ÉÇÏ°Ô µË´Ï´Ù.