WTL窗口消息一般使用ATL形式的消息,也可以使用WTL atlcrack.h中定义的WTL新型消息,VisualFC对这两种消息都支持。
新建或打开一个WTL项目,运行VFC的WTL类向导,更改Class Name中的类为CMainDlg,选择WTL Event页面,可以看到分为两个列表,上面列表为消息列表,即WTL目前支持的消息,下面列表为函数列表,即当前类中处理的消息及函数,其中标记为<ATL>为使用ATL原始消息处理的函数,标记为<WTL>为使用了WTL新型消息的函数。假设我们添加处理右键菜单消息,选择消息列表中的WM_CONTEXTMENU消息,单击"Add Event"按钮,将显示WTL消息编辑对话框,其中最下面的Use WTL message选择按钮控制是ATL消息类型还是WTL消息类型。如果选ATL消息,按确定后将在WTL类中自动加入消息,如下所示:
BEGIN_MSG_MAP(CMainDlg)
MESSAGE_HANDLER(WM_CONTEXTMENU, OnContextMenu)
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
。。。。。。
END_MSG_MAP()
MESSAGE_HANDLER(WM_CONTEXTMENU, OnContextMenu)
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
。。。。。。
END_MSG_MAP()
。。。。。。
LRESULT OnContextMenu(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
return 0;
}
{
return 0;
}
如果选择WTL消息,按确定后将在WTL类中自动加入消息,如下图所示
BEGIN_MSG_MAP(CMainDlg)
MSG_WM_CONTEXTMENU(OnContextMenu)
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
。。。。。。
END_MSG_MAP()
。。。。
void OnContextMenu(CWindow wnd, CPoint point)
{
}
MSG_WM_CONTEXTMENU(OnContextMenu)
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
。。。。。。
END_MSG_MAP()
。。。。
void OnContextMenu(CWindow wnd, CPoint point)
{
}
#include
<
atlmsic.h
>
#include < atlcrack.h >
#include < atlcrack.h >
。。。
BEGIN_MSG_MAP_EX(CMainDlg)
MSG_WM_CONTEXTMENU(OnContextMenu)
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
。。。。。。
END_MSG_MAP()
MSG_WM_CONTEXTMENU(OnContextMenu)
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
。。。。。。
END_MSG_MAP()