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

我尝试使用以下语法创建video窗口:

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

在此处输入图像描述

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

我试过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); 
 ::SetWindowPos(hWnd, HWND_BOTTOM, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE|SWP_NOACTIVATE);