< Progress
bar >
WTL¿¡¼ ÄÚ¸Õ ÄÁÆ®·ÑÀÇ progress bar ÄÁÆ®·ÑÀ» CProgressBarCtrlT À̶ó°í ÇÏ´Â ÅÛÇø´ Ŭ·¡½º¿¡¼ ĸ½¶ÈÇϰí ÀÖ½À´Ï´Ù. ÅÛÇø´ Àμö¿¡´Â Ŭ·¡½º¸¦ ÁöÁ¤ÇÕ´Ï´Ù¸¸ ±× Ŭ·¡½º´Â CProgressBarCtrlT Ŭ·¡½ºÀÇ base class ·Î¼ »ç¿ëµË´Ï´Ù. atlctrls.h Çì´õ¿¡¼´Â typedef¿¡ ÀÇÇØ ´ÙÀ½°ú °°ÀÌ ¼±¾ðµÇ°í ÀÖ½À´Ï´Ù.
|
// atlctrls.h typedef CProgressBarCtrlT<ATL::CWindow> CProgressBarCtrl; |
À̰ÍÀº CProgressBarCtrlŬ·¡½º´Â CWindow Ŭ·¡½ºÀÇ »ó¼Ó Ŭ·¡½ºÀÎ °ÍÀ» ÀǹÌÇÕ´Ï´Ù.
¡¡WTLÀÇ CProgressBarCtrlŬ·¡½º´Â MFCÀÇ CProgressCtrlŬ·¡½º¿Í °ÅÀÇ °°Àº ¸â¹ö ÇÔ¼ö¸¦ ÁغñÇØ ÀÖ½À´Ï´Ù. ÀÌÇÏ¿¡ ³ªÅ¸³»´Â °ÍÀº CProgressBarCtrlŬ·¡½º¸¦ »ç¿ëÇÏ´Â ¿¹ÀÔ´Ï´Ù. 100¹Ð¸® ¼¼ÄÁµå ¸¶´Ù ¹Ù¸¦ ÁøÇà½Ãŵ´Ï´Ù. ³¡±îÁö ÁøÇàµÇ´Âµ¥ ¾à 1ÃÊ °É¸³´Ï´Ù.

|
// stdafx.h #include <atlbase.h> #include <atlapp.h> extern CAppModule _Module; #include <atlwin.h> #include <atlcrack.h> #include <atlmisc.h> #include <atlctrls.h> // ÄÁÆ®·Ñ¿ë Ŭ·¡½º¸¦ »ç¿ëÇϱâ À§ÇØ |
|
// maindlg.h class CMainDlg : public CDialogImpl<CMainDlg> { public: enum { IDD = IDD_MAINDLG }; CProgressBarCtrl
m_progress_sec; // ¸Þ¼¼Áö ¸Ê BEGIN_MSG_MAP_EX(CMainDlg)
MSG_WM_INITDIALOG(OnInitDialog)
COMMAND_ID_HANDLER_EX(IDC_BUTTON_START, OnButtonStart)
COMMAND_ID_HANDLER_EX(IDOK, OnOK)
COMMAND_ID_HANDLER_EX(IDCANCEL, OnCancel) END_MSG_MAP() LRESULT OnInitDialog(HWND hWnd, LPARAM lParam){ // ½ºÅ©¸°ÀÇ Áß¾Ó¿¡ ¹èÄ¡ CenterWindow(); // Å« ¾ÆÀÌÄÜ ¼³Á¤
HICON hIcon = AtlLoadIconImage(IDR_MAINFRAME,
LR_DEFAULTCOLOR,
::GetSystemMetrics(SM_CXICON), ::GetSystemMetrics(SM_CYICON)); SetIcon(hIcon, TRUE); // ÀÛÀº ¾ÆÀÌÄÜ ¼³Á¤
HICON hIconSmall = AtlLoadIconImage(IDR_MAINFRAME,
LR_DEFAULTCOLOR,
::GetSystemMetrics(SM_CXSMICON), ::GetSystemMetrics(SM_CYSMICON)); SetIcon(hIconSmall, FALSE); // ÄÁÆ®·Ñ ¼³Á¤ m_progress_sec = GetDlgItem(IDC_PROGRESS_SEC); m_progress_sec.SetRange(0, 10); m_progress_sec.SetPos(0); return TRUE; } void OnButtonStart(UINT uNotifyCode,
int nID, HWND hWndCtl){ for(int i=0; i<=10; i++){
m_progress_sec.SetPos(i);
Sleep(100); } } void OnOK(UINT uNotifyCode, int nID, HWND hWndCtl){ EndDialog(nID); } void OnCancel(UINT uNotifyCode, int nID, HWND hWndCtl){ EndDialog(nID); } }; |
|
// Control.cpp #include "stdafx.h" #include "resource.h" #include "maindlg.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: ¾îÇø®ÄÉÀÌ¼Ç ½ÇÇà
{ CMainDlg dlgMain; nRet = dlgMain.DoModal(); } _Module.Term(); ::CoUninitialize(); return nRet; } |
¡¡¿ì¼± ¸®¼Ò½º¸¦ ÀÛ¼ºÇÕ´Ï´Ù. ´ÙÀ̾ó·Î±×¿¡ progress bar ÄÁÆ®·ÑÀ» ¹èÄ¡ÇØ ¸®¼Ò½º ID¸¦ ´ÙÀ½°ú °°ÀÌ ÁöÁ¤ÇÕ´Ï´Ù. µ¡ºÙ¿© progress bar ÄÁÆ®·ÑÀÇ [½ºÅ¸ÀÏ]¿¡¼´Â µðÆúÆ®¿¡ [½º¹«µå]¿¡ üũ¸¦ ³Ö½À´Ï´Ù.
|
ÄÁÆ®·Ñ¸í |
¸®¼Ò½ºID |
|
progress bar |
IDC_PROGRESS_SEC |
¡¡´ÙÀ½¿¡ stdafx.h¿¡¼´Â CProgressBarCtrlŬ·¡½º¸¦ »ç¿ëÇϱâ À§Çؼ atlctrls.h Çì´õ¸¦ Æ÷ÇÔ ÇÕ´Ï´Ù.
¡¡CMainDlg Ŭ·¡½º¿¡¼´Â ¿ì¼± progress
bar ÄÁÆ®·Ñ ¿ëÀ¸·Î CProgressBarCtrlŬ·¡½ºÀÇ ÀνºÅϽº¸¦ ¸â¹ö º¯¼ö·Î¼ ¼±¾ðÇÕ´Ï´Ù. À̰ÍÀ» »ç¿ëÇϱâ À§Çؼ´Â WM_INITDIALOG ¸Þ¼¼Áö Çڵ鷯·Î ÄÁÆ®·ÑÀÇ ÇÚµéÀ» ´ëÀÔÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
¡¡´ÙÀ½À¸·Î WM_INITDIALOG
¸Þ¼¼Áö Çڵ鷯·Î progress bar ÄÁÆ®·ÑÀÇ ¹üÀ§¿Í Ãʱâ À§Ä¡¸¦ ¼³Á¤ÇÕ´Ï´Ù.
¡¡ ¹öư ÄÁÆ®·Ñ¿ë Ä¿¸àµå ¸Þ¼¼Áö Çڵ鷯¸¦ Ãß°¡ÇÕ´Ï´Ù. ±× Çڵ鷯¿¡¼´ÂSetPos()¿¡ ÀÇÇØ ¹Ù¸¦ 1/10µÎ °³ ÁøÇàÇÕ´Ï´Ù. µ¡ºÙ¿© Sleep()¿¡ ÀÇÇØ100¹Ð¸® ¼¼ÄÁµå¸¶´Ù ÁøÇàÇϱ⠶§¹®¿¡ ³¡±îÁö ÁøÇàµÇ´Âµ¥ ¾à 1ÃÊ °É¸³´Ï´Ù.
¡¡À§ÀÇ ¿¹¿¡¼´Â ¹Ù¸¦ ÁøÇà½Ã۱â À§Çؼ(¶§¹®¿¡)SetPos()¸¦ »ç¿ëÇß½À´Ï´Ù¸¸ , progress bar ÄÁÆ®·ÑÀº , ¹Ù¸¦ ÁøÇà½Ã۱â À§Çؼ(¶§¹®¿¡) ´Ù¸¥ 2°³ÀÇ ¹æ¹ýÀ» ÁغñÇØ ÀÖ½À´Ï´Ù.
¡¡Ã¹Â°ÀÇ ¹æ¹ýÀº OffsetPos()À» »ç¿ëÇÏ´Â ¹æ¹ýÀÔ´Ï´Ù. OffsetPos()´Â ¹ÙÀÇ À§Ä¡¸¦ ÇöÀçÀÇ À§Ä¡¿¡ ´ëÇØ¼ »ó´ëÀûÀÎ À§Ä¡·Î ¼³Á¤ÇÕ´Ï´Ù.
|
for(int i=0; i<10; i++) m_progress_sec.OffsetPos(1); // ÇöÀçÀÇ À§Ä¡¿¡ ´ëÇØ¼ 1 ÁøÇàÇÑ´Ù Sleep(100); } |
¡¡µÑ°ÀÇ ¹æ¹ýÀº StepIt()À» »ç¿ëÇÏ´Â ¹æ¹ýÀÔ´Ï´Ù. StepIt()À» »ç¿ëÇÏ´Â °æ¿ì´Â ¹Ì¸® SetStep()·Î ÁõºÐÄ¡¸¦ ¼³Á¤ÇÕ´Ï´Ù. ±× ÈÄ StepIt()¸¦ È£ÃâÇÒ ¶§¸¶´Ù ÁõºÐÄ¡ÀÇ ºÐ ¸¸Å ¹Ù°¡ ÁøÇàµË´Ï´Ù.
|
m_progress_sec.SetStep(1); for(int i=0; i<10; i++){ m_progress_sec.StepIt(); Sleep(100); } |