在Windows中重置打开文件对话框位置

时间:2014-04-14 14:22:41

标签: windows winapi

我使用GetOpenFileName功能打开一个打开的文件对话框。我正在制作一个处理函数,它将对话窗口置于所有者窗口的中心。我将对话框放在CDN_INITDONE通知上。

目前,似乎Windows会记住桌面应用的最后一个对话位置并覆盖我的对话框坐标。如何重置最后记住的位置以便我可以检查居中对我的用户有用吗?

我考虑过使用不同的用户或虚拟机运行测试,但这不是很方便。不幸的是,在注册表中搜索myexecutable.exe不会返回任何内容。

我正在运行Windows 8。

1 个答案:

答案 0 :(得分:2)

我迟到了一年,但我不得不处理这个问题。对我有用的是向OFNHookProc提供GetOpenFileName(),然后将传递给OFNHookProc的HWND的父级子类化。

在子类化之后,我处理WM_WINDOWPOSCHANGED,如果坐标不在我认为的位置,我会做SetWindowPos(),撤消子类并返回0。

编辑:我应该说其他方法,例如钩子proc或WM_INITDIALOG中的CDN_INITDONE对我来说不起作用。