WTL中的窗口消息的映射和自定義窗口消息映射
窗口消息的映射是通過宏MESSAGE_HANDLER完成的。
MESSAGE_HANDLER( 消息ID,消息處理函數 )。
自定義的消息也是通過這個宏來映射的
添加窗口消息函數后的對話框的定義如下
#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 ) //系統的窗口消息映射,窗口初始化消息
MESSAGE_HANDLER( WM_MY_MESSAGE, OnMyMessage ) //自定義消息的映射
COMMAND_ID_HANDLER( IDOK, OnOk ) //控件消息的映射
COMMAND_ID_HANDLER( IDCANCEL, OnCancel )
COMMAND_ID_HANDLER( IDC_SENDMESSAGE_BUTTON, OnSendMyMessage ) //用來發送自定義消息的按鈕消息映射
END_MSG_MAP()
public:
//窗口初始化消息映射函數,這是個窗口系統消息
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;
}
//發送自定義消息
LRESULT OnSendMyMessage( WORD wNotfyCode, WORD wID, HWND hWndCtl, BOOL &bHandled )
{
//ATL::CWindow的SendMessage的調用
SendMessage( WM_MY_MESSAGE );
return 0;
}
//處理自定義消息
LRESULT OnMyMessage( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled )
{
//ATL::CWindow的MessageBox的調用
MessageBox( "This is MyMessage Handle" ); //彈出個對話框
return 0;
}
};
posted on 2007-05-09 11:59
walkspeed 閱讀(1033)
評論(0) 編輯 收藏 引用 所屬分類:
C++語言