首先,这是我的配置:
VS2010/Debug/C++ Win32 Project/Vista Home Premium在窗口(CreateWindow)中通过按钮(CreateWindow)调用GetOpenFileName没有任何问题:打开对话框工作正常,我可以单击、导航到另一个文件夹等。
现在,我用一个DialogBoxParam替换我的CreateWindow (它应该在幕后调用CreateWindow ),用相同的(DLGPROC)WndProc并调用相同的GetOpenFileName。在这里,打开对话框表现得很奇怪:看起来只有鼠标双击才能工作(=填充ofn.lpstrFile并关闭打开对话框)。无法单击“打开”和“取消”按钮,并且无法导航。
以前有没有人经历过这种情况?任何已知的导致打开对话框“冻结”的原因。无论是否属于父级(ofn.hwndOwner = hwnd; ofn.hwndOwner = NULL;)都会出现同样的问题。
感谢N
发布于 2012-01-09 10:32:23
你写了
具有相同(DLGPROC)WndProc的
那是你的虫子。对话过程和窗口过程不是一回事。它们遵循不同的规则,如果你遵循WndProc规则,而你应该遵循DlgProc规则,那么就会发生不好的事情。
https://stackoverflow.com/questions/8783157
复制相似问题