出于跨平台奇偶校验的原因,我GetOpenFileName()
没有指定所有者,并且我自己明确禁用了所有顶级窗口。问题是重新启用。为了正确地重新启用这些窗口,我需要在对话框关闭之前重新启用它们。
在用户选择文件的情况下,这不是问题:我只是CDN_FILEOK
在钩子程序中检查。没有问题,没有混乱的焦点。
除了取消对话框,我该怎么做?
我WM_DESTROY
在钩子程序中尝试过,但是在隐藏对话框之后运行(为时已晚)。我试过WM_COMMAND
了,但这似乎并没有涵盖所有情况。我不确定我还有什么其他选择。
我现在需要以 Windows XP 和更新版本为目标;这也意味着没有公共项目对话框。谢谢!
替代方案:如果有一种基于回调的方法GetOpenFileName()
将控制权返回给我的消息循环,例如在 Mac OS X 上beginSheetModalForWindow:
,我可以指定一个父窗口并避免这种黑客攻击。