如何将Window Procedure关联到现有的对话框窗口

问题描述 投票:-1回答:2

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

但是,VS 2013生成的代码似乎并非如此。例如,我找不到类似于引用2的WinMain。它从全局CWinApp :: MyApp对象开始,在MyApp :: InitInstance()中创建并打开我的主对话窗口。我在对话框实现中实现了细节。

我不知道如何将Window Procedure与我的主对话框关联起来。或者,当USB插入引用1中的Main_OnDeviceChange(HWND hwnd,WPARAM wParam,LPARAM lParam)时,如何在主对话框中自动调用。

windows visual-c++ mfc windows-messages
2个回答
0
投票

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

  1. 在BEGIN_MESSAGE_MAP和END_MESSAGE_MAP之间添加ON_WM_DEVICECHANGE()
  2. 添加afx_msg BOOL OnDeviceChange(UINT nEventType,DWORD dwData);并实现它。

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


-1
投票

我无法访问示例的链接,但我从您的问题中了解到,当您的应用程序是基于MFC对话框的应用程序时,示例是使用Windows APIS编写的。

我认为你只需要覆盖Dialog类中的WindowProc方法

LRESULT WindowProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
{       
    return CWnd::WindowProc(uMsg, wParam, lParam);
}
© www.soinside.com 2019 - 2024. All rights reserved.