问题解决——限制窗体的最小尺寸

曾经都是用对话框做东西,这次用的SDI。

突然想限制窗体的最小尺寸,避免缩成一团,就非常任意的先百度了一下。

网上好多方法,有在OnSize里面SetWindowPos或者MoveWindow的,也有在OnSizing里面用这两个函数的。

显然这都不是好办法,会刷屏乱闪。

正确而又优雅的做法非常easy,处理框架窗体的WM_GETMINMAXINFO消息就可以。

比如

void CMainFrame::OnGetMinMaxInfo(MINMAXINFO* lpMMI)
{
	// TODO: 在此加入消息处理程序代码和/或调用默认值
	if (lpMMI->ptMinTrackSize.x<=951)
	{
		lpMMI->ptMinTrackSize.x=951;
	}

	if (lpMMI->ptMinTrackSize.y<=681)
	{
		lpMMI->ptMinTrackSize.y=681;
	}

	CFrameWndEx::OnGetMinMaxInfo(lpMMI);
}

仅仅要指定了值。剩下的事情,MFC会给你做好,就是这么简单。

时间: 2024-08-02 13:17:03

问题解决——限制窗体的最小尺寸的相关文章

问题解决——限制窗口的最小尺寸

以前都是用对话框做东西,这次用的SDI. 突然想限制窗口的最小尺寸,避免缩成一团,就很随意的先百度了一下. 网上好多方法,有在OnSize里面SetWindowPos或者MoveWindow的,也有在OnSizing里面用这两个函数的. 显然这都不是好办法,会刷屏乱闪. 正确而又优雅的做法很简单,处理框架窗口的WM_GETMINMAXINFO消息即可. 例如 void CMainFrame::OnGetMinMaxInfo(MINMAXINFO* lpMMI) { // TODO: 在此添加消息

Qrcode生成二维码的参数总结 及最小尺寸的测试

Qrcode生成二维码,做过很多实验,探索最小规格的二维码到底是多少尺寸,和最高规格的二维码到底是多大尺寸.现在我总结总结: 有两种思路: 1.生成规格高的二维码,然后压缩到自己想要的尺寸的二维码.这种:压缩算法不好的时候会很坑爹. 2.根据调整的参数生成原图,这种图是比较清晰的,打印出来都可以很好的被识别. 先说说第二种吧:根据测试, 1.不设置任何东西时:根据测试 最小的二维码尺寸是45--47:宽高(对于1---14个字符), 第二梯度:54-56:宽高(对于15--26字符) 第三梯度:

delphi 窗体最大化 最小化

procedure TForm1.SpeedButton2Click(Sender: TObject); begin sendmessage(form1.WindowHandle,WM_SYSCOMMAND,SC_ICON,0);//窗体最小化  任务栏中 end;   procedure TForm1.SpeedButton2Click(Sender: TObject); begin form1.WindowState :=  wsMaximized;//窗体最大化 end;   proced

判断窗体是否最小化和最大化

[DllImport("user32.dll")] public static extern bool IsIconic(IntPtr hwnd); [DllImport("user32.dll")] public static extern bool IsZoomed(IntPtr hwnd);

VC限定窗口最小尺寸或最大尺寸

1.添加消息映射: BEGIN_MESSAGE_MAP(CYdToolDlg, CDialog) ON_WM_GETMINMAXINFO() END_MESSAGE_MAP() 2.添加消息处理函数: void CYdToolDlg::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI) { lpMMI->ptMinTrackSize.x = 640; //x宽度 lpMMI->ptMinTrackSize.y = 480; //y高度 CDialog::OnGetMi

[译]- 6-1 排列窗体上的控件(Laying Out Widgets on a Form)

 排列窗体上的控件(Laying Out Widgets on a Form) 中英文对照:form(窗体),layout(布局或者排列,意思是进行窗体上控件的排列的过程,如大小位置等) absolute positioning(绝对位置定位),manual layout(手工布局), layout managers(布局管理器) Qt中有三种方式对窗体上的控件进行布局管理:绝对位置定位(absolute positioning),手工布局(manual layout),布局管理器(layout

Qt5_简易画板_详细注释

代码下载链接:  http://pan.baidu.com/s/1hsc41Ek 密码: 5hdg 显示效果如下: 代码附有详细注释(代码如下) 1 /*** 2 * 先新建QMainWindow, 项目名称: DrawWidget 基类选择: QMainWindow, 3 * 类名默认, 然后在DrawWidget项目名上新建c++class文件, 选择基类: QWidget 4 */ 5 //先完成绘图区的实现 6 //如下为: drawwidget.h 7 #ifndef DRAWWIDG

C#实现无标题栏窗体点击任务栏图标正常最小化或还原的解决方法

对于无标题栏窗体,也就是FormBorderStyle等于System.Windows.Forms.FormBorderStyle.None的窗体,点击任务栏图标的时候,是不能象标准窗体那样最小化或还原的.把下面的代码加到你的Form实现类中,即可实现点击任务栏图标正常最小化或还原窗体. [c-sharp] view plain copy protected override CreateParams CreateParams { get { const int WS_MINIMIZEBOX =

窗体皮肤实现 - 在标题栏上增加快速工具条(四)

前面做的工作就是想在标题区域增加快速工具条.前续的基础工作完成,想要在标题区域增加特殊区域都非常方便.只要在绘制时控制自定义区域需要占用标题区域多少空间,然后直接在所占位置绘制.做这个事情前,稍微把代码规整了下.所以界面皮肤处理放到一个单元中. 主要处理步骤 1.划出一个新区域(整个工具条作为一个区域) 2.处理区域检测(HitTest) 3.如果是新区域,把相应消息传给这个区域处理. 4.响应鼠标点击,执行Action 通过上述步骤就能扩展出所想要的标题区快速工具条的. 标题按钮区域是作为一个