一个MFC基于对话框的程序,在程序中自己定义了一个派生于CWnd类的窗口类,为什么不能响应mousewheel消息?

这个窗口用Create函数创建在了主对话框上,可以响应鼠标点击和鼠标移动消息,就是不能响应鼠标滚动,我在自定义类中写的OnMouseWheel函数不响应,程序直接响应了在主对话框中写的OnMouseWheel函数,怎么能让鼠标在自定义类创建的窗口上是响应写在自定义类中的OnMouseWheel函数呢?

第1个回答  2011-03-05
ialog

在对话框内部那就是
(CWnd*)this ;

如果定义的
CXXXDialog dlg ;
就是 (CWnd*)&dlg ;

如果是对话框的控件如IDC_EDIT1
CWnd *pEdit = GetDlgItem( IDC_EDIT1 ) ;

CWinApp
CWinApp为应用程序类
MFC 中的主应用程序类封装用于 Windows 操作系统的应用程序的初始化、运行和终止。基于框架生成的应用程序必须有且仅有一个从 CWinApp 派生的类的对象。在创建窗口之前先构造该对象。

CWinApp 是从 CWinThread 派生的,后者表示可能具有一个或多个线程的应用程序的主执行线程。在最新版本的 MFC 中,InitInstance、Run、ExitInstance 和 OnIdle 成员函数实际位于 CWinThread 类中。此处将这些函数作为 CWinApp 成员来探讨,因为探讨所关心的是对象作为应用程序对象而不是主线程的角色。
第2个回答  2011-02-25
具体我也不知道为什么你创建的窗口不能响应鼠标滚动的消息,不过楼主可以试试在主对话框的OnMouseWheel里重新把鼠标滚动的消息发送给你自己创建的窗口,用下面这个函数:hwnd用你自己创建的窗口的句柄,
B00L PostMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam)本回答被网友采纳
相似回答