簡體   English   中英

創建具有固定頂部坐標的可調整大小的窗口

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM