gpt4 book ai didi

c - 如何从窗口中删除 WS_EX_TOPMOST 样式?

转载 作者:太空宇宙 更新时间:2023-11-04 00:50:19 24 4
gpt4 key购买 nike

我尝试使用以下语法为视频创建窗口:

hwnd=CreateWindow("Video Window", "Video window", 
WS_OVERLAPPEDWINDOW | WS_VISIBLE,
CW_USEDEFAULT, CW_USEDEFAULT, rect.right-rect.left,rect.bottom-rect.top, NULL, NULL, hInstance, NULL);

一切都按预期工作,但问题是窗口总是在最上面。这意味着即使我切换到其他应用程序,我也会看到这个窗口。

Window directive 程序中我发现了额外的样式:WS_EX_TOPMOST

enter image description here

我如何以编程方式删除它,或者我是否需要以某种方式覆盖它?

我尝试了 SetWindowPos:

SetWindowPos(hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);

或者在 CreateWindowEx 处使用 CreateWindow:

hwnd=CreateWindowEx(WS_EX_LEFT | WS_EX_LTRREADING | WS_EX_RIGHTSCROLLBAR | WS_EX_WINDOWEDGE,
"Video Window","Video Window",
WS_OVERLAPPEDWINDOW | WS_VISIBLE ,
CW_USEDEFAULT,
CW_USEDEFAULT,
rect.right-rect.left,
rect.bottom-rect.top,
NULL,
NULL,
hInstance,
NULL);

但仍然得到标志 WS_EX_TOPMOST

谢谢,

最佳答案

一种解决方法是在清除对应于 WS_EX_TOPMOST 的位并设置新的扩展样式之前查询窗口的当前扩展样式。

像这样:

long dwExStyle = GetWindowLong(hwnd, GWL_EXSTYLE);
dwExStyle &= ~WS_EX_TOPMOST;
SetWindowLong(hwnd, GWL_EXSTYLE, dwExStyle);

关于c - 如何从窗口中删除 WS_EX_TOPMOST 样式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21204881/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com