如何将窗口过程与现有的对话框窗口相关联

时间:2018-09-06 07:25:02

标签: windows visual-c++ mfc windows-messages

我有一个基于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)时,在主对话框中怎么办?

2 个答案:

答案 0 :(得分:0)

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

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

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

OnDeviceChange是默认名称。如果更改名称,它将无法正常工作。

答案 1 :(得分:-1)

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

我认为您只需要在Dialog Class中重写WindowProc方法

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