限制窗体的大小

重载 TCustomForm 中的消息处理函数
procedure WMGetMinMaxInfo(var Message: TWMGetMinMaxInfo); message WM_GETMINMAXINFO;

procedure TBrxServerForm.WMGetMinMaxInfo(var Message: TWMGetMinMaxInfo);
begin
inherited;
With Message.MinMaxInfo^ do
begin
ptMinTrackSize.X := 640;
ptMinTrackSize.Y := 480;
end;
end;

  WM_GETMINMAXINFO消息在窗体改变大小或位置时候发送到窗口,应用程序可以改写其中的窗体
的大小和位置。

消息结构定义如下:

LRESULT CALLBACK WindowProc(
HWND hwnd, // handle to window
UINT uMsg, // WM_GETMINMAXINFO
WPARAM wParam, // not used
LPARAM lParam // window information (LPMINMAXINFO)
);

第二个参数就是本消息的ID值。
最后一个参数是指向 MINMAXINFO 结构体指针。此结构定义如下:

typedef struct tagMINMAXINFO {
POINT ptReserved;
POINT ptMaxSize;
POINT ptMaxPosition;
POINT ptMinTrackSize;
POINT ptMaxTrackSize;
} MINMAXINFO;

  ptReserved:
  保留项目,目前没有使用。

  ptMaxSize:
  指定窗体的最大高度(point.x)和宽度(point.y)。在多监视器的系统中,设定运用于主监视器上。

  ptMaxPosition:
指定最大化状态的窗体的左边的位置 (point.x) 和最大化窗体定边的位置 (point.y)。 在多监
视器系统中,设定运用于主监视器。

  ptMinTrackSize:
  指定窗体框架最小宽度下限 (point.x) 和最小高度下限 (point.y) 。 在多监视器系统中,不会
有所变化。

  ptMaxTrackSize:
  指定窗体框架最小宽度下限 (point.x) 和最小高度下限 (point.y) 在多监视器系统中,大小和
监视器中最大的值一样。

Remarks
The following table describes the changes that occur for a system with multiple monitors.

MINMAXINFO member Definition for multiple monitors
ptMaxSize When a window is maximized or resized, this refers to the primary monitor.
ptMaxPosition Refers to the monitor that the window will maximize on, not the desktop.
ptMinTrackSize Unchanged.
ptMaxTrackSize Size for a window that is made as large as the virtual screen.

The system automatically compensates for differences between the primary monitor and the monitor of the window. Thus, if the user leaves ptMaxSize untouched, a window on a monitor larger than the primary monitor will maximize to the size of the larger monitor.

Requirements
Windows NT/2000/XP: Included in Windows NT 3.1 and later.
Windows 95/98/Me: Included in Windows 95 and later.
Header: Declared in Winuser.h; include Windows.h.

时间: 2024-10-11 05:28:28

限制窗体的大小的相关文章

winform中,如何控制控件位置随窗体的大小改变而改变

winform中,如何控制控件位置随窗体的大小改变而改变 有如下3种方法: 方法1 [csharp] view plaincopy using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace MarkPrint

改变窗体的大小(理解鼠标的操作事件和过程)

1.Designer.cs代码 namespace 手动改变自制窗体的大小 { partial class Form1 { /// <summary> /// 必需的设计器变量. /// </summary> private System.ComponentModel.IContainer components = null; /// <summary> /// 清理所有正在使用的资源. /// </summary> /// <param name=&

vc 使用SetWindowPos改变窗体的大小,实现折叠,展开

void CWork::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); SetWindowPos(NULL,0,0,900,460,SWP_NOMOVE | SWP_NOZORDER); 上面是初始化窗体的大小. 增加事件响应来 实现窗体的折叠,展开(改变大小) //折叠窗体 void CWork::Onkuozhan() { // TODO: Add your control notification han

Android_Dialog_设置Dialog窗体的大小

/** * 设置Dialog窗体的大小 */ private void setWindowSize() { DisplayMetrics dm = new DisplayMetrics(); WindowManager m = getWindowManager(); m.getDefaultDisplay().getMetrics(dm); // 为获取屏幕宽.高 WindowManager.LayoutParams p = getWindow().getAttributes(); // 获取对

窗体的基类中没有设定大小,所以才不能居中,若要窗体居中,必须使用setfixedsize()函数或者resize()函数设定窗体的大小,居中才能正常使用

最近开发中,遇到了窗体不能居中的问题,看了网上的很多文章,窗口居中,无非都是move至窗口的中心目标; 有两种方式, 一种在构造函数中直接计算中心坐标; 另一种是在窗口show后再move至相应坐标.但是自己在构造函数中添加了对应的句子以后,窗体不在窗口的(0,0)点显示,反而在右下角显示,自己很是郁闷.网上的两种方法,基本操作如下: 方法一:在窗口(QWidget类及派生类)的构造函数中添加如下代码: #include <QDesktopWidget> //.......QDesktopWi

Qt 无边框窗体改变大小 完美实现(全部自己实现)

近期,做项目用到无边框窗体,令人蛋疼的是无边框窗体大小的改变要像右边框那样,上下左右四周,而且要流畅. 网上也找了些代码,发现居然还要连接到windows事件,这显然不合常理,后来自己新建了demo,写了一个小时,问题太多了,扔一边先不管了. 今天需要改进UI界面,没办法了,重新整理了下思路,没想到做出来了.下面来分享下实现的过程,也许是菜鸟专栏,高手勿喷~ 1.首先大家要了解各九宫格的概念 一个窗体可以被划分为上.下.左.右.左上.左下.右上.右下.中间,除了中间部分,其他都需要写程序处理.

Qt 无边框窗体改变大小 完美实现

近期,做项目用到无边框窗体,令人蛋疼的是无边框窗体大小的改变要像右边框那样,上下左右四周,而且要流畅. 网上也找了些代码,发现居然还要连接到windows事件,这显然不合常理,后来自己新建了demo,写了一个小时,问题太多了,扔一边先不管了. 今天需要改进UI界面,没办法了,重新整理了下思路,没想到做出来了.下面来分享下实现的过程,也许是菜鸟专栏,高手勿喷~ 1.首先大家要了解各九宫格的概念 一个窗体可以被划分为上.下.左.右.左上.左下.右上.右下.中间,除了中间部分,其他都需要写程序处理.

安卓改变窗体的大小

备注一下,方便查阅 WindowManager m = getWindowManager();           Display d = m.getDefaultDisplay();  //为获取屏幕宽.高           LayoutParams p = getWindow().getAttributes();  //获取对话框当前的参数值           p.height = (int) (d.getHeight() * 1.0);   //高度设置为屏幕的1.0         

C# 改变无边框窗体尺寸大小的方法

const int HTLEFT = 10; const int HTRIGHT = 11; const int HTTOP = 12; const int HTTOPLEFT = 13; const int HTTOPRIGHT = 14; const int HTBOTTOM = 15; const int HTBOTTOMLEFT = 0x10; const int HTBOTTOMRIGHT = 17; protected override void WndProc(ref Messag