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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将Window Procedure关联到现有的对话框窗口相关的知识,希望对你有一定的参考价值。

我有一个基于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)时,如何在主对话框中自动调用。

答案

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

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

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

另一答案

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

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

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

以上是关于如何将Window Procedure关联到现有的对话框窗口的主要内容,如果未能解决你的问题,请参考以下文章

如何将多维数组添加到现有的 Spark DataFrame

如何将 Mailchimp 添加到现有的注册框

如何将绘图附加到现有的 pdf 文件

如何将指标附加到现有的 Lambda 日志组?

如何将熊猫数据添加到现有的 csv 文件中?

如何将新行添加到现有的 QTablewidget