我知道这种事情看起来是消极的,但我为残疾人编写软件,有时候好的gui做法没有意义。在这种情况下,用户与辅助界面交互,在某些条件下,我的控制应用程序需要提示用户提问。我的后台进程创建了一个对话框(我正在使用wxwidgets wxDialog类)并调用Show()。出现对话框,但它没有焦点(用户以前使用的应用程序保留它)。由于我的用户无法使用鼠标,他们不能简单地点击窗口。我试过调用show然后跟着SetFocus(HWND),但是没有这样做。有什么问题?这甚至可能吗? Window7的。我认为它可能与它是一个对话而不是一个完整的窗口(wxFrame)有关。非常感谢任何帮助。
答案 0 :(得分:0)
尝试使用SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOMOVE)
答案 1 :(得分:0)
不幸的是,它不仅“看起来很消极”,而且不可能。没有绕过这个;问问自己如果每个应用程序都可以这样做会发生什么?显然,如果您可以将对话框放在另一个应用程序之上,它可以完全相同的回复。
http://blogs.msdn.com/b/oldnewthing/archive/2010/11/25/10096329.aspx
我能想到的唯一想法就是让你在系统托盘中放置一个通知图标,然后让它显示一个通知气球。
答案 2 :(得分:0)
之前我必须做这样的事情。简单地调用SetForegroundWindow或SetWindowPos等函数并不能解决问题。
我最终使用了这个ForceForegroundWindow函数(第一个)并且效果非常好。
我知道这是Delphi代码,但API是相同的,Delphi是一种非常简单的语言。