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

|
// 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 }; CAnimateCtrl
m_anime_filecopy; // ¸Þ¼¼Áö ¸Ê BEGIN_MSG_MAP_EX(CMainDlg)
MSG_WM_INITDIALOG(OnInitDialog)
COMMAND_ID_HANDLER_EX(IDC_BUTTON_PLAY, OnButtonPlay)
COMMAND_ID_HANDLER_EX(IDC_BUTTON_STOP, OnButtonStop)
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_anime_filecopy = GetDlgItem(IDC_ANIMATE_FILECOPY); m_anime_filecopy.Open(_T("filecopy.avi")); return TRUE; } void OnButtonPlay(UINT uNotifyCode, int nID, HWND hWndCtl){ m_anime_filecopy.Play(0, -1, -1); } void OnButtonStop(UINT uNotifyCode, int nID, HWND hWndCtl){ m_anime_filecopy.Stop(); } void OnOK(UINT uNotifyCode, int nID, HWND hWndCtl){ m_anime_filecopy.Close(); EndDialog(nID); } void OnCancel(UINT uNotifyCode, int nID, HWND hWndCtl){ m_anime_filecopy.Close(); 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; } |
¡¡¿ì¼± ÀÚ¿øÀ» ÀÛ¼ºÇÕ´Ï´Ù. ´ÙÀ̾ó·Î±×¿¡ ¾Ö´Ï¸ÞÀÌ¼Ç ÄÁÆ®·ÑÀ» ¹èÄ¡ÇØ ¸®¼Ò½º ID¸¦ ´ÙÀ½°ú °°ÀÌ ÁöÁ¤ÇÕ´Ï´Ù. µ¡ºÙ¿© ¾Ö´Ï¸ÞÀÌ¼Ç ÄÁÆ®·ÑÀÇ [½ºÅ¸ÀÏ]¿¡¼´Â µðÆúÆ®¿¡ [Åõ°ú]¿Í [Áß¾Ó]¿¡ üũ¸¦ ³Ö¾î [°æ°è¼±]ÀÇ Ã¼Å©¸¦ ¶Á´Ï´Ù.
|
ÄÁÆ®·Ñ¸í |
¸®¼Ò½ºID |
|
¾Ö´Ï¸ÞÀÌ¼Ç |
IDC_ANIMATE_FILECOPY |
¡¡ stdafx.h ¿¡¼´Â CAnimateCtrl Ŭ·¡½º¸¦ »ç¿ëÇϱâ À§Çؼ atlctrls.h Çì´õ¸¦ Æ÷ÇÔ ÇÕ´Ï´Ù.
¡¡CMainDlgŬ·¡½º¿¡¼´Â ¿ì¼± ¾Ö´Ï¸ÞÀÌ¼Ç ÄÁÆ®·Ñ ¿ëÀ¸·Î CAnimateCtrl Ŭ·¡½ºÀÇ ÀνºÅϽº¸¦ ¸â¹ö º¯¼ö·Î¼ ¼±¾ðÇÕ´Ï´Ù. À̰ÍÀ» »ç¿ëÇϱâ À§Çؼ´Â WM_INITDIALOG ¸Þ¼¼Áö Çڵ鷯·Î ÄÁÆ®·ÑÀÇ ÇÚµéÀ» ´ëÀÔÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
¡¡ WM_INITDIALOG ¸Þ¼¼Áö Çڵ鷯·Î, ÇöÀç µð·ºÅ丮¿¡ ÀÖ´Â filecopy.avi ¶ó°í ÇÏ´Â ÆÄÀÏÀ» ¿±´Ï´Ù.
¡¡ [Àç»ý]°ú [Á¤Áö]ÀÇ ¹öư ÄÁÆ®·Ñ¿ë Ä¿¸àµå ¸Þ¼¼Áö Çڵ鷯¸¦ Ãß°¡ÇÕ´Ï´Ù. ±× Çڵ鷯¿¡¼´Â °¢°¢ Play(), Stop()À» È£ÃâÇØ AVI ÆÄÀÏÀÇ Àç»ý°ú Á¤Áö¸¦ ÇÕ´Ï´Ù. µ¡ºÙ¿© Play()ÀÇ Á¦1 Àμö¿¡´Â Àç»ýÇÏ´Â AVI ÆÄÀÏÀÇ ½ÃÀÛ ÇÁ·¹ÀÓ À妽º, Á¦2 Àμö¿¡´Â Á¾·á ÇÁ·¹ÀÓ À妽º( -1¸¦ ÁöÁ¤ÇßÀ» °æ¿ì´Â ÀÚµ¿ÀûÀ¸·Î ¸¶Áö¸· ÇÁ·¹ÀÓ), Á¦3 Àμö¿¡´Â ¹Ýº¹Çϴ ȸ¼ö( -1¸¦ ÁöÁ¤ÇßÀ» °æ¿ì´Â Á¦ÇÑ ¾øÀ½) ¸¦ ÁöÁ¤ÇÕ´Ï´Ù.
¡¡¸¶Áö¸·À¸·Î ,OnOK¶ó°íOnCancel·ÎClose()¸¦ È£ÃâÇØ , ´ÙÀ̾ó·Î±×¸¦ ´Ù¹°±â Àü¿¡AVIÆÄÀÏÀ» ´Ý½À´Ï´Ù.