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

|
// 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 }; CStatic
m_static_border; // °æ°è¼±¿ë CStatic
m_static_pos; // Ä¿¼ ÁÂÇ¥ Ç¥½Ã¿ë // ¸Þ¼¼Áö ¸Ê BEGIN_MSG_MAP_EX(CMainDlg)
MSG_WM_MOUSEMOVE(OnMouseMove)
MSG_WM_INITDIALOG(OnInitDialog)
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_static_border = GetDlgItem(IDC_STATIC_BORDER); m_static_pos = GetDlgItem(IDC_STATIC_POS); CRect rcBorder; m_static_border.GetWindowRect(rcBorder); m_static_border.SetWindowPos(NULL, 0, 0, rcBorder.Width(), 2,
SWP_NOZORDER | SWP_NOMOVE | SWP_SHOWWINDOW); return TRUE; }
void OnMouseMove(UINT uFlags, CPoint ptClient){ CString strPos; strPos.Format(_T("XÁÂÇ¥: %d,
YÁÂÇ¥: %d"), ptClient.x, ptClient.y); m_static_pos.SetWindowText(strPos); } 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; } |
¡¡¿ì¼± ÀÚ¿øÀ» ÀÛ¼ºÇÕ´Ï´Ù. ´ÙÀ̾ó·Î±×¿¡ ½ºÅÂÆ½ ÄÁÆ®·ÑÀ» ¹èÄ¡ÇØ ÀÚ¿ø ID¸¦ ´ÙÀ½°ú °°ÀÌ ÁöÁ¤ÇÕ´Ï´Ù. µ¡ºÙ¿© °æ°è¼±¿ë ½ºÅÂÆ½ ÄÁÆ®·ÑÀÇ [½ºÅ¸ÀÏ]¿¡¼´Â µðÆúÆ®¿¡ °¡¼¼ÇØ [¿òÇ«ÇÑ °÷]¿¡ üũ¸¦ ³Ö½À´Ï´Ù.
|
ÄÁÆ®·Ñ¸í |
ÀÚ¿øID |
|
½ºÅÂÆ½(°æ°è¼±¿ë) |
IDC_STATIC_BORDER |
|
½ºÅÂÆ½([Ä¿¼ À§Ä¡:]¶óº§¿ë) |
IDC_STATIC(µðÆúÆ®ÀΠä ) |
|
½ºÅÂÆ½(Ä¿¼ ÁÂÇ¥ Ç¥½Ã¿ë) |
IDC_STATIC_POS |
¡¡´ÙÀ½¿¡ stdafx.h ¾È¿¡¼´Â CStatic Ŭ·¡½º¸¦ »ç¿ëÇϱâ À§Çؼ atlctrls.h Çì´õ¸¦ ÀÎŬ·çµå ÇÕ´Ï´Ù.
¡¡CMainDlgŬ·¡½º¿¡¼´Â ¿ì¼± °æ°è¼±°ú Ä¿¼ ÁÂÇ¥ Ç¥½Ã¿ëÀ¸·Î CStatic Ŭ·¡½ºÀÇ ÀνºÅϽº¸¦ ¸â¹ö º¯¼ö·Î¼ ¼±¾ðÇÕ´Ï´Ù. À̰͵éÀ» »ç¿ëÇϱâ À§Çؼ´Â WM_INITDIALOG ¸Þ¼¼Áö Çڵ鷯·Î ÄÁÆ®·ÑÀÇ ÇÚµéÀ» ´ëÀÔÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
¡¡´ÙÀ½¿¡ °æ°è¼±À» ÀÛ¼ºÇϱâ À§Çؼ WM_INITDIALOG ¸Þ¼¼Áö Çڵ鷯·Î SetWindowPos()¸¦ »ç¿ëÇØ °æ°è¼±¿ë ½ºÅÂÆ½ ÄÁÆ®·ÑÀÇ ³ôÀ̸¦ 2 ·Î ÇÕ´Ï´Ù.
¡¡´ÙÀ½¿¡ WM_MOUSEMOVE ¸Þ¼¼Áö Çڵ鷯¸¦ Ãß°¡ÇØ Å¬¶óÀÌ¾ðÆ® ¿µ¿ª»óÀÇ Ä¿¼ À§Ä¡¸¦ ½ºÅÂÆ½ ÄÁÆ®·Ñ·Î ¼³Á¤ÇØ ÀÖ½À´Ï´Ù.