如何将窗口过程关联到我的现有对话框窗口



我有一个基于Windows对话框的项目,它是由VS 2013自动生成的。现在我想添加代码来检测 USB 设备插入。我阅读代码示例参考 1。这是一个窗口过程可以处理消息。我也知道我必须将此 WinProc 关联到 WNDCLASS 对象并调用 RegisterClass,就像示例代码引用 2 一样。

但是,我由VS 2013生成的代码似乎并非如此。例如,我找不到像参考 2这样的 WinMain。它从全局 CWinApp::MyApp 对象开始,在 MyApp::InitInstance(( 中创建并打开我的主对话框窗口。我在对话框实现中实现详细信息。

我不知道如何将窗口过程与我的主对话框相关联。或者当USB插入引用1中的Main_OnDeviceChange(HWND hwnd,WPARAM wParam,LPARAM lParam(时,我该如何在主对话框中执行操作,将自动调用。

我在主对话框类中找到了 2 个步骤的解决方案。

  1. 在 BEGIN_MESSAGE_MAP 和 END_MESSAGE_MAP 之间添加ON_WM_DEVICECHANGE((

  2. 添加afx_msg BOOL OnDeviceChange(UINT nEventType, DWORD dwData(;并实现它。

OnDeviceChange 是默认名称。如果更改名称,它将无法运行。

我无法访问示例的链接,但正如我从您的问题中了解到的那样,这些示例是使用 Windows API 编写的,而您的应用程序是基于 MFC 对话框的应用程序。

我认为您只需要覆盖对话框类中的 WindowProc 方法

LRESULT WindowProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
{       
return CWnd::WindowProc(uMsg, wParam, lParam);
}

最新更新