C++程序实现窗口置顶
时间: 2024-11-01 15:01:33 浏览: 27
在C++中,如果你想让一个窗口始终处于最顶层,也就是置于所有打开窗口之上,你可以利用Windows API中的`SetWindowPos()`函数,该函数允许你更改窗口的位置、大小和其他样式属性。以下是一个简单的例子,展示了如何将窗口设为置顶:
```cpp
#include <windows.h>
#include <iostream>
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
// 窗口置顶操作
if (message == WM_SYSCOMMAND && wParam == SC_RESTORE || wParam == SC_MAXIMIZE) {
SetWindowPos(hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); // 取消置顶
} else if (message == WM_SETFOCUS) { // 当窗口获得焦点时再次置顶
SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
}
// 处理默认的消息
return DefWindowProc(hWnd, message, wParam, lParam);
}
int main() {
WNDCLASS wc = {};
wc.lpfnWndProc = WndProc;
wc.hInstance = GetModuleHandle(NULL);
wc.lpszClassName = "TopmostWindow";
RegisterClass(&wc);
HWND hWnd = CreateWindow(wc.lpszClassName, L"My Topmost Window", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, wc.hInstance, NULL);
// 将窗口设为初始时就置顶
SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
ShowWindow(hWnd, SW_SHOW); // 显示窗口
UpdateWindow(hWnd); // 更新窗口
MSG msg;
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
UnregisterClass(wc.lpszClassName, wc.hInstance);
return static_cast<int>(msg.wParam);
}
阅读全文