我使用GetOpenFileName
功能打开一个打开的文件对话框。我正在制作一个处理函数,它将对话窗口置于所有者窗口的中心。我将对话框放在CDN_INITDONE
通知上。
目前,似乎Windows会记住桌面应用的最后一个对话位置并覆盖我的对话框坐标。如何重置最后记住的位置以便我可以检查居中对我的用户有用吗?
我考虑过使用不同的用户或虚拟机运行测试,但这不是很方便。不幸的是,在注册表中搜索myexecutable.exe不会返回任何内容。
我正在运行Windows 8。
答案 0 :(得分:2)
我迟到了一年,但我不得不处理这个问题。对我有用的是向OFNHookProc
提供GetOpenFileName()
,然后将传递给OFNHookProc
的HWND的父级子类化。
在子类化之后,我处理WM_WINDOWPOSCHANGED
,如果坐标不在我认为的位置,我会做SetWindowPos()
,撤消子类并返回0。
编辑:我应该说其他方法,例如钩子proc或WM_INITDIALOG
中的CDN_INITDONE
对我来说不起作用。