DialogBoxParam and GetOpenFileName

DialogBoxParam and GetOpenFileName

本文关键字:GetOpenFileName and DialogBoxParam      更新时间:2023-10-16

首先,这是我的配置:

VS2010/Debug/C++ Win32 Project/Vista Home Premium

通过窗口(CreateWindow)中的按钮(CreateWindow)调用GetOpenFileName不会有问题:打开对话框工作正常,我可以点击、导航到另一个文件夹等

现在,我将CreateWindow替换为DialogBoxParam(应该在后台调用CreateWindow),使用相同的(DLGPROC)WndProc并调用相同的GetOpenFileName。在这里,"打开"对话框的行为很奇怪:看起来只有双击鼠标才能工作(=填充ofn.lpstrFile并关闭"打开"对话)。无法单击"打开"answers"取消"按钮,也无法导航。

以前有人经历过这种情况吗?任何已知的"打开"对话框"冻结"的原因。是否属于父母(ofn.hwndOwner = hwnd; ofn.hwndOwner = NULL;)给出了同样的问题。

谢谢N

您编写了

使用相同的(DLGPROC)WndProc

这是你的错误。对话框过程和窗口过程不是一回事。它们遵循不同的规则,如果你在应该遵循DlgProc规则的时候遵循WndProc规则,那么坏事就会发生。