VC++ 跟随父窗口调整控件大小

VC++之根据对话框大小调整控件大小

1、在对话框类中加入成员变量CRect m_rect;用于保存对话框大小变化前的大小;

2、在对话框的OnInitDialog()函数中获取对话框创建时的大小:GetClientRect(&m_rect);

3、在WM_SIZE的响应函数OnSize()中加入以下代码:

1:private:

CRect m_rect;

2:GetClientRect(&m_rect);

3:

void CButtonDlg::modify(CWnd* pWnd,int cx,int cy)

{

if (pWnd)

{

CRect rect; //获取控件变化前大小

pWnd->GetWindowRect(&rect);

ScreenToClient(&rect); //将控件大小转换为在对话框中得区域坐标

//cx/m_rect.Width()为对话框在横向的变化比例

rect.left = rect.left * cx/m_rect.Width();

rect.right = rect.right * cx/m_rect.Width();

rect.top = rect.top * cy/m_rect.Height();

rect.bottom = rect.bottom * cy/m_rect.Height();

pWnd->MoveWindow(rect);

}

}

void CButtonDlg::OnSize(UINT nType, int cx, int cy)

{

CDialog::OnSize(nType, cx, cy);

CWnd* pWnd1 = GetDlgItem(IDC_BUTTON1);

CWnd* pWnd2 = GetDlgItem(IDC_BUTTON2);

CWnd* pWnd3 = GetDlgItem(IDC_BUTTON3);

CWnd* pWnd4 = GetDlgItem(IDC_BUTTON4);

CWnd* pWnd5 = GetDlgItem(IDC_BUTTON5);

modify(pWnd1,cx,cy);

modify(pWnd2,cx,cy);

modify(pWnd3,cx,cy);

modify(pWnd4,cx,cy);

modify(pWnd5,cx,cy);

GetClientRect(&m_rect);//获取新的对话框的大小

}

时间: 2024-12-18 02:29:03

VC++ 跟随父窗口调整控件大小的相关文章

VC++ 两种动态调整控件位置的方法(CButton设置为Radio形式会出现错误)

1 ((CButton*)GetDlgItem(IDC_CHECK1))->MoveWindow(182, cy - 232, 30, 20); 2 ((CButton*)GetDlgItem(IDC_CHECK2))->MoveWindow(182, cy - 207, 30, 20); 3 ((CButton*)GetDlgItem(IDC_CHECK3))->MoveWindow(182, cy - 182, 30, 20); 4 ((CButton*)GetDlgItem(IDC

C:\\MFC控件大小随窗体大小而改变

一.大小和位置都改变 1.首先为窗体类添加CRect m_rect,该成员变量用来记录窗体的当前大小. 2.在类向导里面(Ctrl+W),为窗体添加消息WM_SIZE的响应函数OnSize(): 注意if(nType==1) return;这一句必须添加,否则最小化恢复的时候会出错. [cpp]?view plaincopy void?CPaperManagementDlg::OnSize(UINT?nType,?int?cx,?int?cy)??? {?? ????CDialog::OnSiz

MFC对话框最大化、最小化、全屏显示、可拉伸、(控件大小动态化)、滚动条

1.点击对话框,在属性里:border改为resizing,可拉伸 Maximize Box 改为True Minimize Box 改为True Vertical Scrollbar改为 true,显示滚动条 titlebar改为false,题目消失 2.对话框全屏显示: OnInitDialog()中,也就是初始显示状态是全屏 int   cx,cy; cx   =   GetSystemMetrics(SM_CXSCREEN); cy   =   GetSystemMetrics(SM_C

C#中父窗口和子窗口之间控件互操作实例

本文实例讲述了C#中父窗口和子窗口之间控件互操作的方法.分享给大家供大家参考.具体分析如下: 很多人都苦恼于如何在子窗体中操作主窗体上的控件,或者在主窗体中操作子窗体上的控件.相比较而言,后面稍微简单一些,只要在主窗体中创建子窗体的时候,保留所创建子窗体对象即可. 下面重点介绍前一种,目前常见的有两种方法,基本上大同小异: 第一种,在主窗体类中定义一个静态成员,来保存当前主窗体对象,例如: 代码如下: public static yourMainWindow pCurrentWin = null

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

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

窗口和控件闪烁解决方案

对于MFC程序员来说做UI开发是痛苦的事情,不过大多数情况下我们都需要做这件事情,因为MFC自带的控件实在是太简陋了.这时候我们多半会涉及到自绘控件,随之而来的很可能就是窗口和控件的闪烁问题.这篇文章希望对MFC的窗口和控件闪烁问题做一个尽量全面的总结. 一.闪烁的原因 引起闪烁的原因很多,以至于网上有n多种解决闪烁问题的方法:如果你按照某一种方法做了仍然没有解决你的问题,请不要认定这个方法有问题,而是你没有对上号.如果你对这个解释不满意的话,我们就来深究一下到底是什么引起了闪烁.从原理上讲,闪

PyQt5 中当窗口大小改变时,如何去调整控件的位置以适应窗口大小改变的思考

from PyQt5.Qt import * #刚开始学习可以这样一下导入 import sys,time class Window(QWidget): def __init__(self): super().__init__() self.setWindowTitle("QLineEdit 输出模式的案例") self.resize(400,400) self.set_ui() self.i = 1 def set_ui(self): pass def resizeEvent(sel

C++windows内核编程笔记day09_day10,对话框和窗口基本控件等的使用

//设置字体颜色 SetTextColor(hdc,RGB(255,0,0)); //窗口背景 //wce.hbrBackground=(HBRUSH)(COLOR_WINDOW+1); //wce.hbrBackground=CreateSolidBrush(RGB(0,0,255)); //设置字体背景 SetBkColor(hdc,RGB(0,0,200)); //设置字体背景模式 SetBkMode(hdc,TRANSPARENT);//字体背景透明 //创建字体,成功返回字体,失败返回

用table表格来调整控件的格式

因为想自己写一个web,所以也在学习html语言的一些东西,让我回想起了大学时代曾对网页设计产生过兴趣,无奈那时候还没有自己的电脑,还常去网吧买个软盘下载一些图片,然后用fontpage做一些网页.后来买了电脑,则一直被"传奇"迷的一塌糊涂,也把网页设计给抛到脑后了.... 由于是在ubuntu下面工作,而linux底下的所见即所得的网页设计真是少的可怜.最后选择了bluefish. 想做一个添加设备的表单,结果因为前缀大小不一样,所以很难看.如图: <!DOCTYPE html