将窗口设置为最顶层

时间:2013-02-20 20:14:52

标签: c++ winapi window topmost

我正试图让我的窗户保持在其他所有人之上。我是C ++ Win32编程的新手。这是我在WinMain中的窗口初始化:

hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);

我之前使用过对话框,因此最顶层的属性非常易于使用。但是在这里,我不知道如何设置窗口。我也希望能够触发它。有人能帮助我吗?

4 个答案:

答案 0 :(得分:24)

SetWindowPos(hwnd01, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);

注意: SWP_NOMOVE | SWP_NOSIZE用于忽略SetWindowPos函数的第3,第4,第5,第6个参数。

第二个参数可以是:

  • HWND_BOTTOM

  • HWND_NOTOPMOST(将窗口设置为普通窗口)

  • HWND_TOP

  • HWND_TOPMOST (设置窗口始终位于顶部)

答案 1 :(得分:19)

CreateWindowEx与(扩展)窗口样式WS_EX_TOPMOST一起使用。

免责声明:自从我触及那些东西以来,已经有15年左右了。

答案 2 :(得分:9)

请参阅SetWindowPoshWndInsertAfter参数。通过HWND_TOPMOST应该做你想做的事。

另外,如果您想保持位置和大小不变,您可能希望将SWP_NOMOVE | SWP_NOSIZE传递给uFlags参数。

答案 3 :(得分:3)

2 Noitidart因为我无法直接评论

SWP_NOMOVE保留当前位置(忽略X和Y参数)。 SWP_NOSIZE保留当前大小(忽略cx和cy参数)。 如果你没有设置这些标志,你应该指定位置和大小而不是传递0,0,0,0