首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从窗口中删除最顶层属性

如何从窗口中删除最顶层属性
EN

Stack Overflow用户
提问于 2019-06-11 10:41:45
回答 1查看 1.6K关注 0票数 1

我有一个Windows C++应用程序,它可以创建两个独立的窗口

我需要能够使一个窗口临时顶部,然后稍后删除该属性,以便其他窗口可以覆盖它。

我试过这段代码:

代码语言:javascript
复制
void setWindowAlwaysOnTop(const std::string& windowTitle, bool onTop) {
    HWND hwnd = FindWindowA(NULL, windowTitle.c_str());
    HWND insertAfter;
    if (onTop) insertAfter = HWND_TOPMOST;  //set the window always-on-top    
    else insertAfter = HWND_BOTTOM; 
    SetWindowPos(hwnd, insertAfter, NULL, NULL, NULL, NULL, SWP_NOMOVE | SWP_NOSIZE);
}

但是,如果我以前用onTop true调用了这段代码,那么在我用onTop false调用它之后,它就不允许其他窗口覆盖目标窗口。

我也尝试过从目标窗口本身调用函数,而不是从单独的窗口调用函数,但它仍然无法工作。

就我在https://learn.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-setwindowpos所能看到的而言,它应该能工作吗?

这是正确的,还是有其他方法来实现这一点?

EN

回答 1

Stack Overflow用户

发布于 2019-06-11 11:23:32

您在问题中提供的文档链接表明您应该将HWND_NOTOPMOST传递给hWndInsertAfter。这面旗帜上写着:

将窗口置于所有非顶部窗口之上(即,位于所有最顶层窗口后面)。如果窗口已经是非顶部窗口,则此标志无效。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56541903

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档