[英]Create resizable window with fixed top coordinate
我想實現一個窗口,其頂部坐標始終為X (為簡單起見,我們假設為 0)。 意思是,窗口的頂部固定在屏幕頂部的 0 上。
我已經實現了窗口,使用SetWindowPos設置了它的位置,但我正在努力維護它的頂部坐標值。
例如,您可以創建一個沒有標題欄的窗口
CreateWindow(className, title, WS_THICKFRAME | WS_POPUP, ...)
然后覆蓋WM_NCHITTEST
以更改上下移動窗口的請求。
如果窗口有標題欄,例如:
CreateWindow(className, title, WS_OVERLAPPEDWINDOW, ...)
然后為WM_WINDOWPOSCHANGING
添加覆蓋:
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch (msg)
{
case WM_NCHITTEST:
{
LRESULT lresult = DefWindowProc(hwnd, msg, wParam, lParam);
switch (lresult)
{
case HTTOP: lresult = HTCLIENT; break;
case HTTOPLEFT: lresult = HTLEFT; break;
case HTTOPRIGHT: lresult = HTRIGHT; break;
}
return lresult;
}
case WM_WINDOWPOSCHANGING:
{
WINDOWPOS* wndpos = (WINDOWPOS*)lParam;
wndpos->y = 100;//choose a fixed position
break;
}
...
}
return DefWindowProc(hwnd, msg, wParam, lParam);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.