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

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);

【讨论】:

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

ACCESS中如何让表关联

SQL数据库中表与表之间的关联怎么建立

如何将 MFC DC 与 QPrinter 关联?

WPF中如何实现将一个窗口的对象关联到另一个窗口?

捕获新创建的模态对话框的窗口句柄

QT Qdialog