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

2025-05-04 20:13:48
推荐回答(2个)
回答1:

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:

具体我也不知道为什么你创建的窗口不能响应鼠标滚动的消息,不过楼主可以试试在主对话框的OnMouseWheel里重新把鼠标滚动的消息发送给你自己创建的窗口,用下面这个函数:hwnd用你自己创建的窗口的句柄,
B00L PostMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam)