< ¸®½ºÆ® ¹Ú½º >
ÀÌÇÏ¿¡ ³ªÅ¸³»´Â °ÍÀº ¸®½ºÆ® ¹Ú½º ÄÁÆ®·ÑÀ» º£À̽º·Î ÇÑ ºä À©µµ¿ì¸¦ ÀÛ¼ºÇÏ´Â ¿¹ÀÔ´Ï´Ù. ºä À©µµ¿ì¿¡´Â »ç¿ë °¡´ÉÇÑ TrueTypeÆùÆ®¸¦ ¿°ÅÇÕ´Ï´Ù.

|
// 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 CListboxView : public CWindowImpl<CListboxView, CListBox> { public: DECLARE_WND_SUPERCLASS(NULL,
CListBox::GetWndClassName()) BOOL PreTranslateMessage(MSG*
pMsg){ return FALSE; } private: // ¸Þ¼¼Áö ¸Ê BEGIN_MSG_MAP_EX(CListboxView)
MSG_WM_CREATE(OnCreate)
COMMAND_CODE_HANDLER_EX(LBN_DBLCLK, OnListDblClick) END_MSG_MAP() LRESULT OnCreate(LPCREATESTRUCT lpcs){
LRESULT lRet = DefWindowProc(); SetFont(AtlGetDefaultGuiFont()); CClientDC dc(m_hWnd); EnumFontFamilies(dc, NULL,
(FONTENUMPROC)FontProc, (LPARAM)this); return lRet; } static int CALLBACK FontProc(ENUMLOGFONT
*lpelf,
NEWTEXTMETRIC *lpntm, int nFontType,
LPARAM lParam) { CListboxView* pList = (CListboxView*)lParam; // TrueTypeÆùÆ®¸í¸¸ ¸®½ºÆ®¿¡ Ãß°¡ if(nFontType & TRUETYPE_FONTTYPE)
pList->AddString(lpelf->elfLogFont.lfFaceName); return 1; } void OnListDblClick(UINT uNotifyCode,
int nID, HWND hWndCtl){ // ÇöÀç ¼±Åõǰí ÀÖ´Â ¾ÆÀÌÅÛÀ» ÃëµæÇØ Ç¥½Ã int nIndex = GetCurSel(); if(nIndex != LB_ERR){
CString strText;
GetText(nIndex, strText);
MessageBox(strText); } } }; |
|
// mainfrm.h class CMainFrame : public CFrameWindowImpl<CMainFrame>, public CUpdateUI<CMainFrame>, public CMessageFilter, public CIdleHandler { public:
DECLARE_FRAME_WND_CLASS(NULL, IDR_MAINFRAME) CListboxView
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() // ºäÅ©¶ó½º¿¡ Ä¿¸àµå
üÀÎ 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 | WS_VSCROLL
|
LBS_NOINTEGRALHEIGHT | LBS_NOTIFY | LBS_WANTKEYBOARDINPUT | LBS_SORT,
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 Ŭ·¡½º·ÎºÎÅÍ ÆÄ»ýÇß´Ù. CListboxView¶ó°í Çϴ Ŭ·¡½º¸¦ Á¤ÀÇÇϰí ÀÖ½À´Ï´Ù. CWindowImpl Ŭ·¡½ºÀÇ Á¦2Àμö¿¡´Â º£À̽º°¡ µÇ´Â CListBox Ŭ·¡½º¸¦ ÁöÁ¤ÇÕ´Ï´Ù.
¡¡CListboxView Ŭ·¡½º ³»¿¡¼´Â ¿ì¼± WM_CREATE ¸Þ¼¼Áö Çڵ鷯¸¦ Ãß°¡ÇÏ¿© ÃÊ¿¡DefWindowProc()¸¦ È£ÃâÇÏ°í ³ª¼ µðÆúÆ®ÀÇ GUI ÆùÆ®¸¦ ¼³Á¤ÇØ ºä¿¡ ÆùÆ®¸íÀ» ¿°ÅÇÕ´Ï´Ù.
¡¡´ÙÀ½¿¡ ÅëÁö Äڵ尡 LBN_DBLCLKÀÇ Ä¿¸àµå ¸Þ¼¼Áö Çڵ鷯¸¦ Ãß°¡ÇÕ´Ï´Ù. ¿©±â¿¡¼´Â ¼±Åõǰí ÀÖ´Â ÆùÆ®¸íÀ» ÃëµæÇÏ¿© ¸Þ½ÃÁö ¹Ú½º·Î Ç¥½ÃÇϰí ÀÖÀ» »ÓÀÔ´Ï´Ù.