-
09-09-2019 - |
题
有没有一种方法来创建的无模式的对话框中C ++ MFC箱总是停留在应用程序中的其它窗口的顶部?我想有点像在Visual Studio 2005中查找对话框 - 在那里停留在上面,但你仍然可以编辑的基础文本
(如果有什么差别,这不是MDI,它是一个基于对话框的应用)
解决方案
从尼什:
在上面让您的对话框住宿
你有没有见过有哪个节目 一个“永远留在最上层”选项?好 令人难以置信的是,你可以 就只有顶端的对话框住宿 的一行代码。简单地说了 下面一行在对话框类的 的OnInitDialog()函数。
SetWindowPos(&this->wndTopMost,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
基本上我们正在做的是使用 该SetWindowPos函数改变 我们的对话窗口的Z顺序。我们 让所有的顶部我们的对话留 其他窗口将其移动到顶部 的Z-次序。现在,即使你 激活一些其他的窗口,我们的窗口 将留在上面。不过,我劝你 确保你确切地知道你 当你这样做正在做的,因为它 可能惹恼人,如果他们不能得到 你的窗口的方式进行时,他们 要做到这一点。
当你在评论所提到的,上面的行使窗口坐根据每个应用的顶部。你需要做的。
SetWindowPos(&this->wndTop,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
为了使坐在窗边上只有你的应用程序的顶部。
- 亚当
其他提示
接受的答案失败的Windows 7或以上。 (也许它的我) 但使无模式对话框为上,而不是孩子解决它。 现在变得定位WRT主对话框窗口,但您可以编写代码在任何地方限制。 使用无边界或顶部条使其成为一个简单的窗口。
不隶属于 StackOverflow