DialogBoxParam和GetOpenFileName

时间:2012-01-09 01:54:43

标签: c++ winapi getopenfilename

首先,这是我的配置:

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;)会产生同样的问题。

由于 Ñ

1 个答案:

答案 0 :(得分:2)

你写了

  

使用相同的(DLGPROC)WndProc

这是你的错误。对话程序和窗口程序不是一回事。它们遵循不同的规则,如果你遵循WlProc规则应该遵循DlgProc规则,那么就会发生不好的事情。