首页 > 解决方案 > 当窗口大小发生变化时,如何调整窗口的大小/重新定位控件

问题描述

使用任何程序时,调整窗口大小会使控件更改位置以适合窗口。你如何使用 C++ 做到这一点?我看过很多 C# 示例,但 C++ 的示例却没有。

标签: c++winapi

解决方案


您可以在消息中使用SetWindowPosAPI :WM_SIZE

我创建了一个示例并使用以下代码:

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    static HWND hButton;
    switch (message)
    {
    case WM_CREATE:
        hButton = CreateWindow(TEXT("Button"), TEXT("OK"), WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON, 50, 50, 50, 50, hwnd, NULL, NULL, NULL);
        return 0;
    case WM_SIZE:
    {
        int cxClient = LOWORD(lParam);
        int cyClient = HIWORD(lParam);
        SetWindowPos(hButton, NULL, cxClient / 3, cyClient / 4, cxClient / 5, cyClient / 2, SWP_SHOWWINDOW);
        return 0;
    }
    case WM_DESTROY:
        PostQuitMessage(0);
        return 0;
    }
    return DefWindowProc(hwnd, message, wParam, lParam);
}

创建的按钮将根据我的调整大小窗口调整大小:

在此处输入图像描述


推荐阅读