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

云满笔记 2014-01-06 08:48:47
RT,我自绘了一个控件必须要在PreTranslateMessage中进行消息的截获并替换,加上下面这条指令:
	if (pMsg->message == WM_LBUTTONDBLCLK)
pMsg->message = WM_LBUTTONDOWN;


可是在自绘控件中是不能有PreTranslateMessage这种东西的,我应该如何做呢?
...全文
167 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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
  • 打赏
  • 举报
回复
这个版区的人少 大家多多支持啊

15,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧