如何将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个步骤的解决方案。
- 在BEGIN_MESSAGE_MAP和END_MESSAGE_MAP之间添加ON_WM_DEVICECHANGE()
- 添加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关联到现有的对话框窗口的主要内容,如果未能解决你的问题,请参考以下文章