对CDialog设置GWL_WNDPROC,但是接受不到鼠标消息,请问是怎么回事?

seagate 2007-09-15 02:16:01
在对话框的OnInitDialog函数里面调用SetWindowLong(hWnd, GWL_WNDPROC, (LONG)WndProc);。运行的时候能接受到一些WM_ACTIVE之类的消息,但是鼠标的消息却接受不到,请问这是为什么?
...全文
116 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
cleverwyq 2007-09-15
  • 打赏
  • 举报
回复
是不是处理了wm_nchittest等消息 ?那样的话,也收不到鼠标消息的
tufaqing 2007-09-15
  • 打赏
  • 举报
回复
我试了一下,可以啊。消息都能响应,只是因为改变了窗口过程,一些关联函数没有调用,界面显示混乱,有些操作失败,可能要将CDialog的一下代码加进来。其实要改变窗口过程直接重载CDialog::WindowProc就好了。

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message)
{
case WM_LBUTTONDOWN:
::MessageBox(hWnd, "WM_LBUTTONDOWN", "", MB_OK);
break;
case WM_RBUTTONDOWN:
::MessageBox(hWnd, "WM_RBUTTONDOWN", "", MB_OK);
break;
}

return DefWindowProc(hWnd, message, wParam, lParam);
}

15,979

社区成员

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

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