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()。。。。。。
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)
{
}
#include <atlmsic.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()
本文介绍如何使用VisualFC的WTL类向导处理WTL窗口消息,包括ATL和WTL两种消息类型,并演示如何添加、修改和删除消息处理函数。
342

被折叠的 条评论
为什么被折叠?



