首先,这是我的配置:
VS2010/Debug/C++ Win32 Project/Vista Home Premium
通过窗口(GetOpenFileName
)中的按钮(CreateWindow
)调用CreateWindow
让我没问题:打开对话框工作正常,我可以点击,导航到另一个文件夹等。 ..
现在,我将CreateWindow
替换为DialogBoxParam
(应该在幕后调用CreateWindow
),使用相同的(DLGPROC)WndProc
并调用相同的GetOpenFileName
}。在这里,打开对话框表现得很奇怪:看起来只有鼠标双击工作(=填充ofn.lpstrFile
并关闭打开对话框)。无法单击“打开”和“取消”按钮而无法导航。
之前有过这种经历的人吗?打开对话框的任何已知原因都是"冻结"。是否属于父母(ofn.hwndOwner = hwnd; ofn.hwndOwner = NULL;
)会产生同样的问题。
由于 Ñ
答案 0 :(得分:2)
你写了
使用相同的(DLGPROC)WndProc
这是你的错误。对话程序和窗口程序不是一回事。它们遵循不同的规则,如果你遵循WlProc规则应该遵循DlgProc规则,那么就会发生不好的事情。