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 阅读(1015)
评论(0) 编辑 收藏 引用 所属分类:
C++语言