修改
这个问题不是关于将窗口连接到一切的前面,只是为了我的特定应用程序。我希望他们与之交互的框架在新框架后面。就像一个对话框,除了它不是一个对话框。我不认为这是不好的做法,召唤了一些东西(在这种情况下是通过菜单)我希望它是在我曾经召唤它的窗口前面。
我刚读过How can I ensure that a wxFrame is brought to the foreground?,但这也不起作用。
SetFocus();
让窗口想要我的注意力(如果重要的话,它会在我的平台,GTK和MATE任务栏的任务栏中闪烁)
Raise();
没做什么
Show();
显示了它,但尽管它是新创建的状态,但没有任何反应。
奇怪地点击窗口并没有将它带到前面,直到我在父母身上做了一些事情,尽管在任务栏中显示了我正在与之交互的事情。我正在使用上面的所有3个(Show,SetFocus然后Raise)。
我看过Raise
的文档(http://docs.wxwidgets.org/trunk/classwx_window.html#a54808c933f22a891c5db646f6209fa4d)Raise
和Lower
是“z顺序函数” - 这表明它应该这样做。尽管如此,我从来没有真正取得过多大的成功。每当我跑步时,如果起始帧到达前台,我真的很高兴,但考虑到我按下运行的次数,并且与编写代码所花费的时间和创建新的事实相比,构建了项目。文件夹甚至更频繁,我忍受了它。
修好它会很好!
附录
在父级上使用Lower
无效。将会有64种不太明显的尝试方法,我真的想避免绊脚石。
答案 0 :(得分:0)
我相信ravenspoint,这不是一个很好的用户界面技巧,但是,如果你不介意一点点闪烁...和窃取焦点,无论你在哪里打字等等,只是有点不好......
ParentWindow->Iconize(false); // restore the window if minimized
ParentWindow->SetFocus(); // focus on my window
ParentWindow->Raise(); // bring window to front
ParentWindow->Show(true); // show the window
在此之前,请考虑使用
运行的另一个关键应用程序“输入计数器测量启动代码,影响时间为12秒:”
在打字的一半时,你的窗口决定弹出到顶部。