WTL中的窗口消息的映射和自定義窗口消息映射
窗口消息的映射是通過(guò)宏MESSAGE_HANDLER完成的。
MESSAGE_HANDLER( 消息ID,消息處理函數(shù) )。
自定義的消息也是通過(guò)這個(gè)宏來(lái)映射的
添加窗口消息函數(shù)后的對(duì)話框的定義如下
#include < atlapp.h >
#include "resource.h"
const int WM_MY_MESSAGE = WM_USER+1; //自定義消息ID
class CMainDialog : public CDialogImpl< CMainDialog >
{
public:
enum { IDD = IDD_MAINDLG };
public:
BEGIN_MSG_MAP( CMainDialog )
MESSAGE_HANDLER( WM_INITDIALOG, OnInitDialog ) //系統(tǒng)的窗口消息映射,窗口初始化消息
MESSAGE_HANDLER( WM_MY_MESSAGE, OnMyMessage ) //自定義消息的映射
COMMAND_ID_HANDLER( IDOK, OnOk ) //控件消息的映射
COMMAND_ID_HANDLER( IDCANCEL, OnCancel )
COMMAND_ID_HANDLER( IDC_SENDMESSAGE_BUTTON, OnSendMyMessage ) //用來(lái)發(fā)送自定義消息的按鈕消息映射
END_MSG_MAP()
public:
//窗口初始化消息映射函數(shù),這是個(gè)窗口系統(tǒng)消息
LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
// center the dialog on the screen
CenterWindow();
return TRUE;
}
LRESULT OnOk( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled )
{
EndDialog( wID );
return 0;
}
LRESULT OnCancel( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL &bHandled )
{
EndDialog( wID );
return 0;
}
//發(fā)送自定義消息
LRESULT OnSendMyMessage( WORD wNotfyCode, WORD wID, HWND hWndCtl, BOOL &bHandled )
{
//ATL::CWindow的SendMessage的調(diào)用
SendMessage( WM_MY_MESSAGE );
return 0;
}
//處理自定義消息
LRESULT OnMyMessage( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled )
{
//ATL::CWindow的MessageBox的調(diào)用
MessageBox( "This is MyMessage Handle" ); //彈出個(gè)對(duì)話框
return 0;
}
};
posted on 2007-05-09 11:59
walkspeed 閱讀(1052)
評(píng)論(0) 編輯 收藏 引用 所屬分類:
C++語(yǔ)言