< ¸®½ºÆ® ºä >
ÀÌÇÏ¿¡ ³ªÅ¸³»´Â °ÍÀº ¸®½ºÆ® ºä ÄÁÆ®·ÑÀ» º£À̽º·Î ÇÑ ºä À©µµ¿ì¸¦ ÀÛ¼ºÇÏ´Â ¿¹ÀÔ´Ï´Ù. ºä À©µµ¿ì¿¡´Â ÇöÀç µð·ºÅ丮ÀÇ Æú´õ¸í°ú ÆÄÀϸíÀ» ¿°ÅÇÕ´Ï´Ù.

|
// 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> |
|
// view.h class CListView : public CWindowImpl<CListView, CListViewCtrl> { public: DECLARE_WND_SUPERCLASS(NULL,
CListViewCtrl::GetWndClassName()) BOOL PreTranslateMessage(MSG*
pMsg){ return FALSE; } private: // ¸Þ¼¼Áö ¸Ê BEGIN_MSG_MAP_EX(CListView)
MSG_WM_CREATE(OnCreate) REFLECTED_NOTIFY_CODE_HANDLER_EX(NM_DBLCLK,
OnListDblClick)
DEFAULT_REFLECTION_HANDLER() END_MSG_MAP() LRESULT OnCreate(LPCREATESTRUCT lpcs){
LRESULT lRet = DefWindowProc(); SetFont(AtlGetDefaultGuiFont()); SetExtendedListViewStyle(LVS_EX_INFOTIP |
LVS_EX_FULLROWSELECT); // ¸®½ºÆ®ºä¿¡ Ä÷³ »ðÀÔ CRect rcList; ::GetClientRect(GetParent(), rcList); int nScrollWidth = GetSystemMetrics(SM_CXVSCROLL); int n3DEdge = GetSystemMetrics(SM_CXEDGE); InsertColumn(0, _T("À̸§"), LVCFMT_LEFT, 190,
-1); InsertColumn(1, _T("Á¾·ù"), LVCFMT_LEFT,
rcList.Width() - 190 - nScrollWidth
- n3DEdge * 2, -1); // ¸®½ºÆ®ºä¿¡ ¾ÆÀÌÅÛ Ãß°¡ CFindFile find; if(find.FindFile()){
do{
if(!find.IsDots()){
int nIndex = GetItemCount();
AddItem(nIndex, 0,
find.GetFileName());
AddItem(nIndex, 1,
find.IsDirectory() ? _T("Æú´õ") :
_T("ÆÄÀÏ"));
}
}while(find.FindNextFile()); } return lRet; } LRESULT OnListDblClick(LPNMHDR pnmh){
LPNMITEMACTIVATE pnmia = (LPNMITEMACTIVATE)pnmh; CString strItem; GetItemText(pnmia->iItem, 0, strItem); CString strSubItem; GetItemText(pnmia->iItem, 1, strSubItem); MessageBox(strItem + _T("˼")
+ strSubItem + _T("ÀÔ´Ï´Ù. "), _T("¾ÆÀÌÅÛ")); return 0; } }; |
|
// mainfrm.h class CMainFrame : public CFrameWindowImpl<CMainFrame>, public CUpdateUI<CMainFrame>, public CMessageFilter, public CIdleHandler { public:
DECLARE_FRAME_WND_CLASS(NULL, IDR_MAINFRAME) CListView
m_view; virtual
BOOL PreTranslateMessage(MSG* pMsg){ if(CFrameWindowImpl<CMainFrame>::PreTranslateMessage(pMsg))
return TRUE; return m_view.PreTranslateMessage(pMsg); } virtual
BOOL OnIdle(){ UIUpdateStatusBar(); return FALSE; } BEGIN_UPDATE_UI_MAP(CMainFrame) // ¿£Æ®¸® ¾øÀ½ END_UPDATE_UI_MAP() BEGIN_MSG_MAP_EX(CMainFrame)
MSG_WM_CREATE(OnCreate)
COMMAND_ID_HANDLER_EX(ID_APP_EXIT, OnMenuExit)
CHAIN_MSG_MAP(CUpdateUI<CMainFrame>) CHAIN_MSG_MAP(CFrameWindowImpl<CMainFrame>)
CHAIN_CLIENT_COMMANDS() // ºäÅ©¶ó½º¿¡ Ä¿¸àµå
üÀÎ
REFLECT_NOTIFICATIONS() // ¸Þ¼¼Áö ¸®Ç÷º¼Ç END_MSG_MAP() LRESULT OnCreate(LPCREATESTRUCT lpcs){ // »óÅ ¹Ù¸¦ ÀÛ¼º CreateSimpleStatusBar(); UIAddStatusBar(m_hWndStatusBar); // ºä¸¦ ÀÛ¼º m_hWndClient = m_view.Create(m_hWnd, rcDefault, NULL,
WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN |
LVS_REPORT | LVS_SHOWSELALWAYS,
WS_EX_CLIENTEDGE); // ¸Þ½ÃÁö ·çÇÁ¿¡ ¸Þ¼¼Áö ÇÊÅÍ¿Í
¾ÆÀ̵¹ Çڵ鷯¸¦ Ãß°¡ CMessageLoop* pLoop = _Module.GetMessageLoop(); pLoop->AddMessageFilter(this); pLoop->AddIdleHandler(this); return 0; } void OnMenuExit(UINT uNotifyCode, int nID, HWND hWndCtl){ PostMessage(WM_CLOSE); } }; |
|
// app.cpp #include "stdafx.h" #include "resource.h" #include "view.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_WIN95_CLASSES); 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 ¿¡¼´Â ÄÁÆ®·Ñ¿ë Ŭ·¡½º¸¦ »ç¿ëÇϱâ À§Çؼ atlctrls.h Çì´õ¸¦ ÀÎŬ·çµå ÇÕ´Ï´Ù.
¡¡´ÙÀ½¿¡ ºä À©µµ¿ì¸¦ À§ÇÑ Å¬·¡½º¸¦ Á¤ÀÇÇÕ´Ï´Ù. À§ÀÇ ¿¹¿¡¼´Â ÇÁ·ÎÁ§Æ®¿¡ view.h ¶ó°í ÇÏ´Â Çì´õ ÆÄÀÏÀ» Ãß°¡ÇÏ¿© °Å±â¿¡ CWindowImpl Ŭ·¡½º·ÎºÎÅÍ ÆÄ»ýÇÑ CListView ¶ó°í Çϴ Ŭ·¡½º¸¦ Á¤ÀÇÇϰí ÀÖ½À´Ï´Ù. CWindowImpl Ŭ·¡½ºÀÇ Á¦2Àμö¿¡´Â º£À̽º°¡ µÇ´ÂCListViewCtrl Ŭ·¡½º¸¦ ÁöÁ¤ÇÕ´Ï´Ù.
¡¡CListView Ŭ·¡½º ³»¿¡¼´Â ¿ì¼± WM_CREATE ¸Þ¼¼Áö Çڵ鷯¸¦ Ãß°¡ÇÏ¿© ÃÖÃÊ¿¡DefWindowProc()¸¦ È£ÃâÇÏ°í ³ª¼ µðÆúÆ®ÀÇ GUIÆùÆ®¸¦ ¼³Á¤ÇØ ºä¿¡ ÇöÀç µð·ºÅ丮ÀÇ Æú´õ¸í°ú ÆÄÀϸíÀ» ¿°ÅÇÕ´Ï´Ù.
¡¡´ÙÀ½¿¡ ÅëÁö Äڵ尡 NM_DBLCLKÀÇ ÅëÁö ¸Þ¼¼Áö Çڵ鷯¸¦ Ãß°¡ÇÕ´Ï´Ù. ¿©±â¿¡¼´Â ¼±Åõǰí ÀÖ´Â ¾ÆÀÌÅÛ Ä³¸¯ÅÍ ¶óÀÎÀ» ÃëµæÇÏ¿© ¸Þ½ÃÁö ¹Ú½º·Î Ç¥½ÃÇϰí ÀÖÀ» »ÓÀÔ´Ï´Ù. µ¡ºÙ¿© ÀÌ ÇÔ¼ö´Â ¸Þ¼¼Áö ¸®Ç÷º¼Ç¿¡ ÀÇÇØ ºÒ·Á Áý´Ï´Ù.