У меня есть приложение для Windows C ++, которое создает два отдельных окна
Мне нужно временно сделать одно окно самым верхним, а затем удалить этот атрибут, чтобы другие окна могли перекрывать его.
Я пробовал этот код:
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://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-setwindowpos, это должно работать?
Это правильно, или есть другой способ достичь этого?