c++ - 当窗口大小发生变化时,如何调整窗口的大小/重新定位控件
问题描述
使用任何程序时,调整窗口大小会使控件更改位置以适合窗口。你如何使用 C++ 做到这一点?我看过很多 C# 示例,但 C++ 的示例却没有。
解决方案
您可以在消息中使用SetWindowPos
API :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);
}
创建的按钮将根据我的调整大小窗口调整大小:
推荐阅读
- flutter - 颤振医生:设备离线
- angular - 如何在 Electron + Angular 应用程序中使用 cookie?
- postgresql - Postgresql 中的字符串替换源自一个额外的字符串数组
- nginx - proxy_pass 的位置不起作用,错误在哪里?
- javascript - 当javascript中发生输入元素更改事件时,如何防止丢失按钮单击事件?
- extjs - 取消进程而不使用延迟任务
- python - 获取组合框值以输入 python tkinter 中的按钮命令
- html - Div 的中心图像
- matlab - 如何在 for 循环中更新 xtick 和 xticklabel?
- excel - Excel - 使用文件名(存储在单元格中)来引用该文件中的值