有没有办法在C ++ MFC中创建一个无模式对话框,它始终位于应用程序中其他窗口的顶部?我认为有点像Visual Studio 2005中的查找对话框 - 它保持在顶部,但您仍然可以编辑基础文本。
(如果它有任何区别,那就不是MDI;它是一个基于对话框的应用程序)
答案 0 :(得分:17)
来自Nish:
让对话保持在最前面
你有没有看过有的节目 一个“永远保持在顶部”的选择?好 令人难以置信的是你可以 让你的对话保持在最佳状态 一行代码。简单地说 对话框类中的以下行 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);
使窗口仅位于您的应用程序之上。
- 亚当
答案 1 :(得分:0)
对于Windows 7或更高版本,接受的答案失败。 (或者也许是我) 但是,将无模式对话框作为弹出窗口而不是子对话框可以解决该问题。 现在可以在主对话框窗口中定位它,但是您可以编写代码来约束任何地方。 使用无边框或顶部栏使其成为一个简单的窗口。