您的位置:首页 > 其它

VisualFC使用 - 处理WTL窗口消息

2007-11-16 10:39 633 查看
       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;
 }


如果选择WTL消息,按确定后将在WTL类中自动加入消息,如下图所示


BEGIN_MSG_MAP(CMainDlg)


    MSG_WM_CONTEXTMENU(OnContextMenu)


    MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)


。。。。。。


END_MSG_MAP()




。。。。
 void OnContextMenu(CWindow wnd, CPoint point)
 {
 }

我们需要将BEGIN_MSG_MAP改为BEGIN_MSG_MAP_EX,然后在CMainDlg类的头文件中添加所需头文件即可,如下所示。


#include <atlmsic.h>


#include <atlcrack.h>


。。。
  BEGIN_MSG_MAP_EX(CMainDlg)


    MSG_WM_CONTEXTMENU(OnContextMenu)


    MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)


。。。。。。


END_MSG_MAP()

       如果不需要处理某个消息,也可以使用WTL类向导在"WTL Event"页面中选中不需要消息函数,单击Del Event按钮将对其进行删除,将会提示这实际上只是将BEGIN_MSG_MAP中的消息进行注释掉,实际的函数并没有真正删除。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  class