WTL 自绘控件中不能使用PreTranslateMessage该如何截获消息呢

坏狗狗 上海希熙信息科技有限公司 软件工程师Software Engineer  2014-01-06 08:48:47
RT,我自绘了一个控件必须要在PreTranslateMessage中进行消息的截获并替换,加上下面这条指令:
	if (pMsg->message == WM_LBUTTONDBLCLK)
pMsg->message = WM_LBUTTONDOWN;


可是在自绘控件中是不能有PreTranslateMessage这种东西的,我应该如何做呢?
...全文
88 点赞 收藏 3
写回复
3 条回复
xiaohuh421 2014年01月06日
wtl中有这个函数的, 只是类中要实现CMessageFilter的接口. class CMessageFilter { public: virtual BOOL PreTranslateMessage(MSG* pMsg) = 0; }; http://www.winmsg.com/wtl/Part2.htm 这里有讲. 并且, 你还可以直接重写消息处理过程函数, wtl基类有一个虚函数, CWindowImplBaseT类有一个虚函数 virtual WNDPROC GetWindowProc() { return WindowProc; } 你可以重写这个函数, 然后返回自己的窗口处理过程, 就可以拦截消息了. 再有一种办法, 就是在messagemap中直接写一个函数, 当然, 这只能处理dwMsgMapID=0的情况. BEGIN_MSG_MAP(CMainWnd) PrintMessage(uMsg, wParam, lParam);//这是一个自定义函数. END_MSG_MAP()
回复 点赞
坏狗狗 2014年01月06日
如果使用钩子的话那就全局了 对全局其它的可能存在隐患的,那还有其它方法吗,我用的是WTL
回复 点赞
坏狗狗 2014年01月06日
这个版区的人少 大家多多支持啊
回复 点赞
发动态
发帖子
进程/线程/DLL
创建于2007-09-28

6376

社区成员

4.9w+

社区内容

VC/MFC 进程/线程/DLL
社区公告
暂无公告