第一种通过Attack
HWND hWnd = GetDlgItem(IDC_LIST1);m_list.Attach(hWnd);hWnd = GetDlgItem(IDC_EDIT1);m_edit.Attach(hWnd);m_edit.SetWindowText(_T("hell wolrd "));
第二种通过窗口子类化
m_btnOk.SubclassWindow(GetDlgItem(IDOK));m_btnCacel.SubclassWindow(GetDlgItem(IDCANCEL));
第三种通过之类继承
template<LPCTSTR res>
class CTCButton :public CWindowImpl<CTCButton<res>,CButton>
{
public:BEGIN_MSG_MAP_EX(CTCButton)MSG_WM_SETCURSOR(OnSetCursorOK)END_MSG_MAP()LRESULT OnSetCursorOK(HWND hWnd, UINT uHitTest, UINT uMsg){static HCURSOR hcur = LoadCursor(NULL, res);if (hcur != NULL){SetCursor(hcur);return TRUE;}else{SetMsgHandled(False);return false;}return 0;}
};
第四种通过DDX
class CTCEdit:public CWindowImpl<CTCEdit,CEdit>
{
public:BEGIN_MSG_MAP_EX(CTCEdit)MSG_WM_CONTEXTMENU(OnContextMenu) END_MSG_MAP()void OnContextMenu(HWND, CPoint pt){MessageBox(_T("Menu done!"));}
};
主代码
class CMainDlg : public CDialogImpl<CMainDlg>,public CWinDataExchange<CMainDlg>
{
public:CMainDlg() :m_btnOk(this,1), m_btnCacel(this,2){;}BEGIN_DDX_MAP(CMainDlg)DDX_CONTROL(IDC_EDIT2, m_edit2) END_DDX_MAP()enum { IDD = IDD_MAINDLG };BEGIN_MSG_MAP_EX(CMainDlg)MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)COMMAND_ID_HANDLER(ID_APP_ABOUT, OnAppAbout)COMMAND_ID_HANDLER(IDOK, OnOK)COMMAND_ID_HANDLER(IDCANCEL, OnCancel)ALT_MSG_MAP(1)MSG_WM_SETCURSOR(OnSetCursorOK)ALT_MSG_MAP(2)MSG_WM_SETCURSOR(OnSetCursorCancel)END_MSG_MAP()LRESULT OnInitDialog(UINT , WPARAM , LPARAM , BOOL& ){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);HWND hWnd = GetDlgItem(IDC_LIST1);m_list.Attach(hWnd);hWnd = GetDlgItem(IDC_EDIT1);m_edit.Attach(hWnd);m_edit.SetWindowText(_T("hell wolrd "));m_btnOk.SubclassWindow(GetDlgItem(IDOK));m_btnCacel.SubclassWindow(GetDlgItem(IDCANCEL));m_btnAbout.SubclassWindow(GetDlgItem(ID_APP_ABOUT));DoDataExchange(FALSE);return TRUE;}LRESULT OnAppAbout(WORD , WORD , HWND , BOOL& ){CSimpleDialog<IDD_ABOUTBOX, FALSE> dlg;dlg.DoModal();return 0;}LRESULT OnOK(WORD , WORD wID, HWND , BOOL& ){EndDialog(wID);return 0;}LRESULT OnCancel(WORD , WORD wID, HWND , BOOL& ){EndDialog(wID);return 0;}LRESULT OnSetCursorOK(HWND hWnd,UINT uHitTest,UINT uMsg){static HCURSOR hcur = LoadCursor(NULL, IDC_HAND);if (hcur != NULL){SetCursor(hcur);return TRUE;}else{SetMsgHandled(False);return false; }return 0;}LRESULT OnSetCursorCancel(HWND hWnd, UINT uHitTest, UINT uMsg){static HCURSOR hcur = LoadCursor(NULL, IDC_NO);if (hcur != NULL){SetCursor(hcur);return TRUE;}else{SetMsgHandled(False);return false;}return 0;}protected:CListViewCtrl m_list;CEdit m_edit;CContainedWindow m_btnOk;CContainedWindow m_btnCacel;CTCButton<IDC_HELP> m_btnAbout;CTCEdit m_edit2;
};
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!