首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

对CDialog设置GWL_WNDPROC,但是接受不到鼠标消息,请教是咋回事

2012-03-11 
对CDialog设置GWL_WNDPROC,但是接受不到鼠标消息,请问是怎么回事?在对话框的OnInitDialog函数里面调用SetW

对CDialog设置GWL_WNDPROC,但是接受不到鼠标消息,请问是怎么回事?
在对话框的OnInitDialog函数里面调用SetWindowLong(hWnd,   GWL_WNDPROC,   (LONG)WndProc);。运行的时候能接受到一些WM_ACTIVE之类的消息,但是鼠标的消息却接受不到,请问这是为什么?

[解决办法]
我试了一下,可以啊。消息都能响应,只是因为改变了窗口过程,一些关联函数没有调用,界面显示混乱,有些操作失败,可能要将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);
}
[解决办法]
是不是处理了wm_nchittest等消息 ?那样的话,也收不到鼠标消息的

热点排行