移动窗口 - 设置最小宽度/高度
MoveWindow - set minimum width/height?
有没有办法在窗口上强制实施最小大小(宽度和高度(?
我见过不允许将窗口大小调整到某个点以下的应用程序,并且不会闪烁或任何东西。此外,如果分辨率低于这些最小值,它们将不允许最大化,而是将自己恢复为填充屏幕,但永远不会最大化。
如何实现这一点?
我自己还没有这样做,但这样的事情应该可以工作:
LRESULT CALLBACK WndProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch (msg)
{
case WM_SIZING:
{
RECT r = *((RECT *)lParam);
if (r.right - r.left > MAX_WIDTH)
((RECT *)lParam)->right = r.left + MAX_WIDTH;
if (r.bottom - r.top > MAX_HEIGHT)
((RECT *)lParam)->bottom = r.top + MAX_HEIGHT;
break;
}
}
return DefWindowProc (hwnd, msg, wParam, lParam);
}
基本上,如果窗口的矩形将超过最大宽度或高度,它会调整它并将其发送,因此它不应该引起闪烁。同样,我从未尝试过这个,所以我不完全确定。
正如 Luke 指出的那样,您可以通过处理WM_GETMINMAXINFO
来设置默认值而不是重新发明轮子来节省大量工作。
您可以使用
GetWindowRect来检查窗口的大小,如果它大于或小于您想要的大小,您只需使用SetWindowLong并添加DS_FIXEDSYS,这样您就可以阻止窗口的大小调整
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 最小硬币更换问题(自上而下方法)
- 芬威克树(BIT).找到具有给定累积频率的最小索引,单位为 O(logN)
- 使用递归的数组的最小值.这是怎么回事
- 找到两对数字,使它们的乘积的绝对差最小化
- 如何使用boost::具有嵌套结构和最小代码更改的序列化
- 最大和最小 1 C++函数
- 如何创建一个函数来计算并返回平均值、最大值和最小值
- 我可以做些什么来消除或最小化这种将提供相同功能和行为的代码重复
- 在二维数组中查找最小值和最大值?
- 查找矩阵C++中每一列和每一行的最小和最大元素
- 如何找到大于整数的最小数字
- 字节真的是最小可寻址单元吗
- 带自定义比较器的最小优先级队列
- 设置QPUSHBUTTON的最小宽度,同时保持默认的最小尺寸行为
- C++最小字符串宽度
- 如何在不使用递归的情况下获取二叉树的最小高度
- 移动窗口 - 设置最小宽度/高度
- 如何设置 QFormLayout 的第一列的最小宽度
- 二叉树的最小高度