如何将窗口过程关联到我现有的对话窗口
Posted
技术标签:
【中文标题】如何将窗口过程关联到我现有的对话窗口【英文标题】:How to associate Window Procedure to my existing dialog window 【发布时间】:2018-09-06 07:25:02 【问题描述】:我有一个基于 Windows 对话框的项目,它由 VS 2013 自动生成。现在我想添加代码来检测 USB 设备插入。我阅读了代码示例refer 1。这是一个可以处理消息的窗口过程。我也知道我必须将此 WinProc 关联到 WNDCLASS 对象并调用 RegisterClass,例如示例代码 refer 2。
但是,我的 VS 2013 生成的代码似乎并非如此。例如,我找不到像 refer 2 这样的 WinMain。它从一个全局 CWinApp::MyApp 对象开始,在 MyApp::InitInstance() 中创建并打开我的主对话窗口。我在对话框实现中实现细节。
我不知道如何将窗口过程与我的主对话框相关联。或者当 USB 插入 refer 1 中的 Main_OnDeviceChange(HWND hwnd, WPARAM wParam, LPARAM lParam) 时,我该如何在主对话框中自动调用。
【问题讨论】:
您正在尝试使用您不了解的框架来解决问题。 MFC 具有挑战性;您首先需要接受该框架。正如所写,这个问题既无用也无用。 【参考方案1】:我在主对话框类中找到了 2 个步骤的解决方案。
在 BEGIN_MESSAGE_MAP 和 END_MESSAGE_MAP 之间添加 ON_WM_DEVICECHANGE()
添加 afx_msg BOOL OnDeviceChange(UINT nEventType, DWORD dwData);并实施。
OnDeviceChange 是默认名称。改名无效。
【讨论】:
【参考方案2】:我未能访问示例的链接,但我从您的问题中了解到,示例是使用 Windows APIS 编写的,而您的应用程序是基于 MFC 对话框的应用程序。
我认为你只需要重写 Dialog 类中的 WindowProc 方法
LRESULT WindowProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
return CWnd::WindowProc(uMsg, wParam, lParam);
【讨论】:
以上是关于如何将窗口过程关联到我现有的对话窗口的主要内容,如果未能解决你的问题,请参考以下文章