MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
COMMAND_ID_HANDLER(IDOK, OnOK)
COMMAND_ID_HANDLER(IDCANCEL, OnCancel)
COMMAND_ID_HANDLER(IDC_LIST_COLOR, OnColorNotify)
END_MSG_MAP()
<List 1> Control member variable and CContainedWindow class
CStandardNotifyDlg() : m_lbColor(this, 1),
BEGIN_MSG_MAP(CStandardNotifyDlg)
private: |
<List 2> Including atlcontrols.h header file
#include "resource.h" // main symbols #include "atlcontrols.h" #include <atlhost.h> using namespace ATLControls; |
<List 3> OnInitDialog
LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { // Attach contained windows to control m_lbColor.SubclassWindow(GetDlgItem(IDC_LIST_COLOR)); m_lbLog.SubclassWindow(GetDlgItem(IDC_LIST_LOG)); HWND hWnd = GetDlgItem(IDC_LIST_COLOR); SendMessage(hWnd, LB_ADDSTRING, 0, (LPARAM)_T("White")); SendMessage(hWnd, LB_ADDSTRING, 0, (LPARAM)_T("Black")); SendMessage(hWnd, LB_ADDSTRING, 0, (LPARAM)_T("Yellow")); SendMessage(hWnd, LB_ADDSTRING, 0, (LPARAM)_T("Green")); SendMessage(hWnd, LB_ADDSTRING, 0, (LPARAM)_T("Red")); SendMessage(hWnd, LB_ADDSTRING, 0, (LPARAM)_T("Blue")); return 1; // Let the system set the focus } |
<List 4> COMMAND_ID_HANDLER
BEGIN_MSG_MAP(CStandardNotifyDlg) MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog) COMMAND_ID_HANDLER(IDOK, OnOK) COMMAND_ID_HANDLER(IDCANCEL, OnCancel) COMMAND_ID_HANDLER(IDC_LIST_COLOR, OnColorNotify) ALT_MSG_MAP(1) // Color ListBox ALT_MSG_MAP(2) // Log ListBox END_MSG_MAP() |
<List 5> Notification Handler Function
LRESULT OnColorNotify(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled) { switch (wNotifyCode) { case LBN_DBLCLK: SendMessage(m_lbLog, LB_ADDSTRING, 0, (LPARAM)_T("LBN_DBLCLK")); break; case LBN_ERRSPACE: SendMessage(m_lbLog, LB_ADDSTRING, 0, (LPARAM)_T("LBN_ERRSPACE")); break; case LBN_KILLFOCUS: SendMessage(m_lbLog, LB_ADDSTRING, 0, (LPARAM)_T("LBN_KILLFOCUS")); break; case LBN_SELCANCEL: SendMessage(m_lbLog, LB_ADDSTRING, 0, (LPARAM)_T("LBN_SELCANCEL")); break; case LBN_SELCHANGE: SendMessage(m_lbLog, LB_ADDSTRING, 0, (LPARAM)_T("LBN_SELCHANGE")); break; case LBN_SETFOCUS: SendMessage(m_lbLog, LB_ADDSTRING, 0, (LPARAM)_T("LBN_SETFOCUS")); break; } long nCurSel = SendMessage(m_lbLog, LB_GETCOUNT, 0, 0); if (nCurSel != LB_ERR) { m_lbLog.SendMessage(LB_SETCURSEL, nCurSel-1, 0); //SendMessage(m_lbLog, LB_SETCURSEL, nCurSel-1, 0); } return 0; } |
WTL은 GDI오브젝트
http://jacking75.cafe24.com/WTL/1.htm ~(숫자를 바꾸면 계속 진행된다)
본문서 「ATL/WTL」은 ,Microsoft이 제공하고 있는 템플릿 라이브러리인ATL(Active Template Library) 와 open source의 템플릿 라이브러리인WTL(Windows Template Library) 를 사용한Windows프로그래밍에 대한 문서입니다. 이하에ATLWTL의 개요를 나타냅니다.
WTL 이라는 것은 |
|
ATL/WTL프로그래밍의 특징 | ||||||
ATL및WTL은 그 이름과 같이 C++템플릿을 베이스로 하고 있어 오버헤드가 매우 낮다고 하는 특징이 있습니다. 그리고 MFC와 같은 공유DLL를 별도 필요로 하지 않습니다. 아래에 , 윈도우 중앙에 「Hello, World」이라고 표시하기만 하면 되는 간단한 프로그램의 실행 파일 사이즈를 비교한 표를 나타냅니다. 덧붙여 모두Win32 Application프로젝트로 작성해 MFC의 경우만MFC스태틱 라이브러리를 사용하도록 설정을 변경합니다. 나머지의 설정은 디폴트인 채입니다.
|