如何实现控件随对话框大小变化而自动调整大小和位置

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

http://wenku.baidu.com/link?url=M0RYOPqeaKx4Wh0fZFUWpU-WAeqJY1LB7opHz9t0WAjBDHAYZJyleL_IS8ctLMnVW7k33rNwphHRe0UMV4OiiYCCkjqzMvJK0Zp2MB24ngy



如何实现控件随对话框大小变化而自动调整大小和位置

 

VC++

 2009-12-28 20:27:42 

阅读

461 

评论

0

  

字号:

 

订阅

 

1. 

处理对话框的

WM_SIZE

然后用

MoveWindow

或者

SetWindowPos

来把对话框上面的

控件重新调整新位置和大小。

 

2. 

基本的做法就是响应

WM_SIZE

消息,并按照窗口大小比例来调整控件的位置和大小,

控件的大小最好设置成窗口的百分之几,这样的话,就可以根据窗口的大小随时调整了

 

3. 

每次

OnSize 

即可获得一个

CRect

然后根据这个

CRect

来确定这些控件的位置和大小,

使用函数

MoveWindow 

SetWindowpos

实现。

 

4. 

1

通过下面两个函数获取的是显示屏幕的大小

【屏幕的分辨率】

(不包括任务栏等区域)

 

  int 

  

nFullWidth=GetSystemMetrics( 

SM_CXFULLSCREEN

 );   

//

屏幕宽度

 

   

  

int 

  

nFullHeight=GetSystemMetrics( 

SM_CYFULLSCREEN

 );  //

屏幕高度

 

2

)这两个函数获取的是真正屏幕的大小【屏幕的分辨率】(包括任务栏等区域):

 

  

int   

cx   

=   

GetSystemMetrics( SM_CXSCREEN );    

  

int   

cy   

=   

GetSystemMetrics( SM_CYSCREEN ); 

如:用前两个函数获取的大小可能是

1024*687 

,而用下边两个获取的就是

1024*768

 

5. 

OnSize() 

中调用:

 

GetClientRect()  

  

GetWindowRect() 

函数可获取窗口大小,

但需注意得到的是设备坐标,如果需要画图什么的还需要转换成逻辑坐标。

 

6. 

字体大小随窗口变化而自动变化,比如说始终使字的高度始终占窗口的

1/3

。使用:

 

   

1). 

Creat

中将

nHeight

设成窗口长度或者宽度的一定比值就行了

(最好在

onsize

函数

中设置);

 

   

2). 

使用

 

WM_FONTCHANGE 

消息。

 

*****************************************************************************************************

************************************** 

转载自:

http://topic.csdn.net/u/20090314/16/835a3bbb-2d13-4842-922a-8a07cde1a055.html 

(作

者:

Fireway2008

 

总结步骤:

 

1.

创建一个

CWnd*   

的数组,在初始化时取的各个控件的句柄,存在这个数组里面

    

2.

处理

WM_SIZE

事件,可以得到新变化后的窗口和最初窗口的变化比例

kx,ky    

3.

对数组中的每一个控件,计算新位置

    

4.MoveWindow

移动到新位置


C#控件随着窗体自动调整大小 C#控件随着窗体自动调整大小 #1.创建一个类 class #2.在Form_Load中添加执行语句 缺点:无法自动调整容器中的窗体,暂未找到合适的解决方法! 1. class Resize { private Form _form; public Resize(Form form) { int count = form.Controls.Count * 2 + 2; float[] factor = new float[count]; int 阅读详情

相关推荐

怎么样才可以使得窗体中的控件窗体变化变化

怎么样才可以使得窗体中的控件窗体变化变化 Delphi / Windows SDK/APIhttp://www.delphi2007.net/DelphiAPI/html/delphi_20061108163345274.html 怎么样才可以使得窗体中的控件窗体变化变化 设置AlignAnchors属性 在窗体的OnResize事件里重新设置一个目标控件的Left...

aibi9196的博客 248

tkinter布局,主窗体自适应控件大小,上面两个文本框,下面5×5个按钮 by chatgpt

我们将文本框放置在第一行,将按钮放置在第二行之后的行中,使用`row``column`参数指定行列的位置,并使用`padx``pady`参数指定控件之间的间距。然后,我们使用`columnconfigure()``rowconfigure()`方法设置主窗口自适应控件大小。为了实现你的需求,我们可以使用`grid()`方法将按钮文本框放置在主窗口中,并使用`columnconfigure()``rowconfigure()`方法使主窗口自适应控件大小。# 将文本框放置到主窗口中。

平淡如茶 2267

对话框可以拖动改变大小

要在Property中设置 Resizer属性才可以调整大小 

lyzhm的专栏 3562

java 改变窗口大小_java 如何让程序窗口随屏幕大小改变

这个问题一直困扰我很长时间了,虽然工作了一段时间,但感觉连这个问题都解决不好的话,实在对不起自己。今天我终于抽出时间,好好网上找了下资料,然后写了个简单的记事本程序,感觉是我想要的结果。所以在这里把程序帖出来,希望能对学子们有帮助。‍package com.chapter2;import java.awt.Dimension;import java.awt.Toolkit;import javax...

weixin_30909873的博客 1618

wxpython控件如何自动调整大小_如何实现控件对话框大小变化自动调整大小位置...

1. 处理对话框的WM_SIZE,然后用MoveWindow或者SetWindowPos来把对话框上面的控件重新调整位置大小。2. 基本的做法就是响应WM_SIZE消息,并按照窗口大小比例来调整控件位置大小控件大小最好设置成窗口的百分之几,这样的话,就可以根据窗口的大小随时调整了。3. 每次OnSize 即可获得一个CRect,然后根据这个CRect来确定这些控件位置大小,使用函数...

weixin_39630880的博客 1399

VC中自动改变控件位置大小对话框

在用VC开发应用程序时,经常会要做一些可以改变大小对话框,而这个时候就要求对话框上的控件会随着对话框大小改变改变自己的位置大小。如果控件比较少,那可以在对话框的OnSize()事件里面添加代码,通过计算来调整各个控件位置大小;但是,如果对话框上的控件比较多的话,那这将是一件非常痛苦的事情!要是程序中又有很多可以改变大小对话框,那一个一个的OnSize()写下来,那会使程序员崩溃的!

寒星轩 1万+

MFC如何使控件大小随着对话框大小自动调整

对话框大小变化后,假若对话框上的控件大小变化,看起来会比较难看。下面就介绍怎么让对话框上的控件随着对话框大小变化自动调整。 首先明确的是Windows有一个WM_SIZE消息响应函数,这个函数在对话框大小发生变化的时候调用,所以我们可以记录下原来对话框大小,还有当前对话框大小(这个不用自己算,系统已给出),然后根据控件做出相应比例的调整。 比如原来对话框大小为a,现在为b,

flyear_cn 715

MFC 控件随窗口尺寸变化自动调整位置大小

MFC 控件随窗口尺寸变化自动调整位置大小 [转载]https://www.cnblogs.com/weixinhum/p/3916699.html 在MFC对话框编程过程中经常会出现这样一个问题,在给窗口做尺度变换后,原来的控件位置大小并没有跟着变,导致界面看起来极不协调,如下: 要解决这个问题,可在类结构体中声明一个CRect变量以存储之前窗体大小的信息,如下: CRect m_DlgRe...

gdamichael的博客 777

根据对话框大小调整控件大小位置

VC++之随父窗口变化调整控件大小之随父窗口变化调整控件大小之随父窗口变化调整控件大小之随父窗口变化调整控件大小/位置位置位置位置  如果对话框或视类的大小调后,控件大小位置没有变化,界面看起来会很不爽.      控件是从CWnd派生的,但不能使用SetWindowPos()或OnSize()或OnSizing()来改变大小,应在父窗口的WM_SIZE消息中使用MoveWindow()来

lanzily99的专栏 6550

MFC控件随窗口大小变化原理及实现

本文主要针对MFC的dialog,实现控件随窗口大小变化。 原理:首先获取dialog的初始大小,当窗口发送变动时,调用OnSize事件方法,计算缩放比例,然后对界面中的所有控件进行缩放布局。 实现: 创建一个CMFCDemoDlg的dialog对话框; // CMFCDemoDlg 对话框 class CMFCDemoDlg : public CDialogEx { // 构造...

u011555996的博客 3994

MFC学习之路(9)之如何使控件大小随着对话框大小自动调整

1)首先设置一个变量 CRect m_rect; //用于保存原对话框大小 2)初始化OnInitDialog()中加入 GetClientRect(&m_rect); //获取对话框大小 3)手动声明、创建一个函数 void CMyDlg::ChangeSize(UINT nID, int x, int y) //nID为控件ID,x,y分别为对话框的当前长宽 { CWnd ...

Loewen丶的小窝 1069

MFC小笔记:控件随窗口变化

一、需求 当窗口大小变化时,如最大化、最小化时,控件位置大小并没有变化,本文实现此功能。 二、界面 主界面为对话框,有最小化、最大化、关闭等功能。 三、原理 当窗口变化时,响应 OnSize 函数,并计算各控件位置,按比例缩放。 四、编码 4.1 变量定义 在对话框类向导中添加 WM_SIZE 消息。其函数定义如下: afx_msg void OnSize(UINT nType, int cx...

李迟的专栏 1471

VC++之随父窗口变化调整控件大小(转载)

如果对话框或视类的大小调后,控件大小位置没有变化,界面看起来会很不爽控件是从CWnd派生的,但不能使用SetWindowPos()或OnSize()或OnSizing()来改变大小,应在父窗口的WM_SIZE消息中使用MoveWindow()来进行调整。VC++之根据对话框大小调整控件大小1、在对话框类中加入成员变量CRect m_rect;用于保存对话框大小变化前的大小;2、在对话框

2313
上一篇: 如何看程序源码 ->附链接
下一篇: visual studio2010:fatal error C1033: 无法打开程序数据库 该怎么办?
chenbindsg
博客等级 码龄18年 6粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值