< ¸®½ºÆ® ºä >
WTL¿¡¼ °ø¿ë ÄÁÆ®·ÑÀÇ ¸®½ºÆ® ºä ÄÁÆ®·ÑÀ» CListViewCtrlT À̶ó°í ÇÏ´Â ÅÛÇø´ Ŭ·¡½º¿¡¼ ĸ½¶ÈÇϰí ÀÖ½À´Ï´Ù. ÅÛÇø´ Àμö¿¡´Â Ŭ·¡½º¸¦ ÁöÁ¤ÇÕ´Ï´Ù¸¸ ±× Ŭ·¡½º´ÂCListViewCtrlTŬ·¡½ºÀÇ base classÀ¸·Î¼ »ç¿ëµË´Ï´Ù. atlctrls.hÇì´õ¿¡¼´Â typedef¿¡ ÀÇÇØ ´ÙÀ½°ú °°ÀÌ ¼±¾ðµÇ°í ÀÖ½À´Ï´Ù.
|
// atlctrls.h¾È typedef CListViewCtrlT<ATL::CWindow> CListViewCtrl; |
À̰ÍÀº CListViewCtrlŬ·¡½º´Â CWindowŬ·¡½ºÀÇ »ó¼Ó Ŭ·¡½ºÀÎ °ÍÀ» ÀǹÌÇÕ´Ï´Ù.
¡¡WTLÀÇ CListViewCtrlŬ·¡½º´Â MFCÀÇ CListCtrlŬ·¡½º¿Í µ¿µîÀÇ ±â´ÉÀ» °®Ãß°í ÀÖ´Â °Í ¿Ü¿¡ È®Àå ±â´Éµµ °®Ãß°í ÀÖ½À´Ï´Ù. ÀÌÇÏ¿¡ ³ªÅ¸³»´Â °ÍÀº CListViewCtrlŬ·¡½º¸¦ »ç¿ëÇÏ´Â ¿¹ÀÔ´Ï´Ù. ÇöÀç µð·ºÅ丮ÀÇ Æú´õ¸í°ú ÆÄÀϸíÀ» ¸®½ºÆ® ºä¿¡ Ãß°¡ÇØ ¾ÆÀÌÅÛÀ» ´õºí Ŭ¸¯ Çϸé À̸§°ú Á¾·ù¸¦ ¸Þ½ÃÁö ¹Ú½º·Î Ç¥½ÃÇÕ´Ï´Ù.

|
// 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 }; CListViewCtrl
m_list_file; // ¸Þ¼¼Áö ¸Ê BEGIN_MSG_MAP_EX(CMainDlg)
MSG_WM_INITDIALOG(OnInitDialog)
NOTIFY_HANDLER_EX(IDC_LIST_FILE, NM_DBLCLK, OnListDblClick)
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_list_file = GetDlgItem(IDC_LIST_FILE); m_list_file.SetExtendedListViewStyle(LVS_EX_INFOTIP |
LVS_EX_FULLROWSELECT); // ¸®½ºÆ® ºä ÄÁÆ®·Ñ¿¡ Ä÷³ »ðÀÔ CRect rcList; m_list_file.GetWindowRect(rcList); int nScrollWidth = GetSystemMetrics(SM_CXVSCROLL); int n3DEdge = GetSystemMetrics(SM_CXEDGE); m_list_file.InsertColumn(0,
_T("À̸§"), LVCFMT_LEFT, 190, -1); m_list_file.InsertColumn(1,
_T("Á¾·ù"), LVCFMT_LEFT,
rcList.Width() - 190 - nScrollWidth
- n3DEdge * 2, -1); // ¸®½ºÆ® ºä ÄÁÆ®·Ñ¿¡ ¾ÆÀÌÅÛ
Ãß°¡ CFindFile find; if(find.FindFile()){
do{
if(!find.IsDots()){
int nIndex = m_list_file.GetItemCount();
m_list_file.AddItem(nIndex,
0, find.GetFileName());
m_list_file.AddItem(nIndex,
1,
find.IsDirectory() ? _T("Æú´õ") :
_T("ÆÄÀÏ"));
}
}while(find.FindNextFile()); } return TRUE; } LRESULT OnListDblClick(LPNMHDR pnmh){
LPNMITEMACTIVATE pnmia = (LPNMITEMACTIVATE)pnmh; CString strItem; m_list_file.GetItemText(pnmia->iItem, 0, strItem); CString strSubItem; m_list_file.GetItemText(pnmia->iItem, 1, strSubItem); MessageBox(strItem + _T("˼")
+ strSubItem + _T("ÀÔ´Ï´Ù. "), _T("¾ÆÀÌÅÛ")); return 0; } 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_LIST_FILE |
¡¡´ÙÀ½¿¡ stdafx.h ¿¡¼´Â CListViewCtrl Ŭ·¡½º¸¦ »ç¿ëÇϱâ À§Çؼ atlctrls.hÇì´õ¸¦ Æ÷ÇÔ ÇÕ´Ï´Ù.
¡¡CMainDlgŬ·¡½º¿¡¼´Â ¿ì¼± ¸®½ºÆ® ºä ÄÁÆ®·Ñ ¿ëÀ¸·Î CListViewCtrl Ŭ·¡½ºÀÇ ÀνºÅϽº¸¦ ¸â¹ö º¯¼ö·Î¼ ¼±¾ðÇÕ´Ï´Ù. À̰ÍÀ» »ç¿ëÇϱâ À§Çؼ´Â WM_INITDIALOG ¸Þ¼¼Áö Çڵ鷯¿¡¼ ÄÁÆ®·ÑÀÇ ÇÚµéÀ» ´ëÀÔÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
¡¡´ÙÀ½¿¡ WM_INITDIALOG
¸Þ¼¼Áö Çڵ鷯·Î ¸®½ºÆ® ºä ÄÁÆ®·ÑÀÇ È®Àå ½ºÅ¸ÀÏÀ» ¼³Á¤Çؼ Ä÷³À» »ðÀÔÇϰí CFindFile Ŭ·¡½º¸¦ »ç¿ëÇØ ÇöÀç µð·ºÅ丮ÀÇ Æú´õ¿Í ÆÄÀÏÀ» Á¶»ç ÇÕ´Ï´Ù.
¡¡CFindFile Ŭ·¡½º´Â atlmisc.h¿¡ Á¤Àǵǰí ÀÖ¾î À̸§ÀÌ ºñ½ÁÇÑ MFCÀÇ CFileFind Ŭ·¡½º¿Í °ÅÀÇ °°Àº ¸â¹ö ÇÔ¼ö¸¦ ÁغñÇØ ÀÖ½À´Ï´Ù.
¡¡´ÙÀ½À¸·Î ÅëÁö Äڵ尡 NM_DBLCLKÀÇ ¸®½ºÆ® ºä ÄÁÆ®·Ñ ¿ë ÅëÁö ¸Þ¼¼Áö Çڵ鷯¸¦ Ãß°¡ÇÕ´Ï´Ù. ±× Çڵ鷯 ¿¡¼´Â ´õºí Ŭ¸¯ µÈ ¾ÆÀÌÅÛÀÇ ÅØ½ºÆ®¸¦ ÃëµæÇØ¼ ¸Þ½ÃÁö ¹Ú½º·Î Ç¥½ÃÇϰí ÀÖ½À´Ï´Ù.