转载自http://blog.csdn.net/chw1989/article/details/7488711

大小和位置都改变(亲测可行)

1.首先为窗体类添加CRect m_rect,该成员变量用来记录窗体的当前大小。

2.在类向导里面(Ctrl+W),为窗体添加消息WM_SIZE的响应函数OnSize();

注意if(nType==1) return;这一句必须添加,否则最小化恢复的时候会出错

  1. void CPaperManagementDlg::OnSize(UINT nType, int cx, int cy)
    {
    CDialog::OnSize(nType, cx, cy);
    if(nType==) return;//最小化则什么都不做
    // TODO: Add your message handler code here
    CWnd *pWnd;
    pWnd = GetDlgItem(IDC_STATIC);
    ChangeSize(pWnd, cx, cy);
    pWnd = GetDlgItem(IDC_FILE_TREE);
    ChangeSize(pWnd, cx, cy);
    pWnd = GetDlgItem(IDC_EDIT_NAME);
    ChangeSize(pWnd, cx, cy);
    pWnd = GetDlgItem(IDC_EDIT_REFERENCE);
    ChangeSize(pWnd, cx, cy);
    pWnd = GetDlgItem(IDC_EDIT_SUMMARY);
    ChangeSize(pWnd, cx, cy);
    pWnd = GetDlgItem(IDC_EDIT_REMARK);
    ChangeSize(pWnd, cx, cy);
    pWnd = GetDlgItem(IDC_BUTTON_UPDATE);
    ChangeSize(pWnd, cx, cy);
    pWnd = GetDlgItem(IDC_BUTTON_SAVE);
    ChangeSize(pWnd, cx, cy);
    pWnd = GetDlgItem(IDC_STATIC_1);
    ChangeSize(pWnd, cx, cy);
    pWnd = GetDlgItem(IDC_STATIC_2);
    ChangeSize(pWnd, cx, cy);
    pWnd = GetDlgItem(IDC_STATIC_3);
    ChangeSize(pWnd, cx, cy);
    pWnd = GetDlgItem(IDC_STATIC_4);
    ChangeSize(pWnd, cx, cy);
    GetClientRect(&m_rect);// 将变化后的对话框大小设为旧大小
    }

    changesize是自己添加的函数

void CPaperManagementDlg::ChangeSize(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);//设置控件大小
}
}

  

MFC让控件随窗口大小而改变的更多相关文章

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

    本文主要针对MFC的dialog,实现控件随窗口大小变化. 原理:首先获取dialog的初始大小,当窗口发送变动时,调用OnSize事件和方法,计算缩放比例,然后对界面中的所有控件进行缩放和布局. 实 ...

  2. MFC TabCtrl 控件修改标签尺寸

    注意:无论那种方法,都要先设置Tab控件的Style属性为fixed width. 第一种方法 MFC,tabcontrol控件改变标签大小 - CSDN博客 https://blog.csdn.ne ...

  3. MFC Spin 控件

    一般应用: 设置属性: Auto Buddy(自动取关联控件为TAB顺序前一个)Set Buddy Interger(使控件设置关联控件数值,这个值可以是十进制或十六进制)Wrap(数值超过范围时循环 ...

  4. delphi ,1)控件根据窗口大小,一直居中显示 2)显示最大化最小化按钮控件

    一.控件根据窗口大小,一直居中显示 1)onResize:当窗体尺寸改变时发生 例子:如何使控件随窗口的放大和缩小动态改变自己的大小,使控件“保存.返回”在窗口变大变小中随着变. 在Panel调用 p ...

  5. 发布MFC ActiveX控件并实现自动更新

    一.        引言 上一篇我们讲了如何使用 VC 2005来开发 MFC ActiveX控件,我们开发 ActiveX控件最终目的是将 ActiveX控件发布出来并嵌入在 Web网页中,随着控件 ...

  6. 如何将 MFC ActiveX 控件标记为安全,脚本和初始化

    MSDN原文.ActiveX控件标记安全(可以不仅仅是MFC ActiveX) 概要 默认情况下,MFC ActiveX 控件未标记为对脚本编写是安全的和对初始化是安全的.控制运行在 Internet ...

  7. vs2010开发activex(MFC)控件/ie插件(一)

    原文:http://blog.csdn.net/yhhyhhyhhyhh/article/details/50782904  vs2010开发activex(MFC)控件:      第一步:生成ac ...

  8. DevExpress控件-GridControl根据条件改变单元格(Dev GridControl 单元格着色)

    DevExpress控件-GridControl根据条件改变单元格颜色,如下图: 解决办法:可以参考:http://www.cnblogs.com/zeroone/p/4311191.html 第一步 ...

  9. 开发ActiveX控件调用另一个ActiveX系列1——开发一个MFC ActiveX控件

    ActiveX开发的教程有很多,我也从中受益匪浅,例如以下这几篇: 基本教程:http://www.cnblogs.com/guenli/articles/1629915.html 注意事项:http ...

随机推荐

  1. SQL 经典练习

    SQL 基础练习 CREATE TABLE STUDENT(SNO VARCHAR(3) NOT NULL, SNAME VARCHAR(4) NOT NULL,SSEX VARCHAR(2) NOT ...

  2. hdu 素数环

    算法:搜索 题意:相邻的两个数之和是素数,别忘了最后一个,和第一个 Problem Description A ring is compose of n circles as shown in dia ...

  3. jsp笔记,包括编译指令和动作指令,九大对象等

    jsp基础知识 不包括HTTP协议,只有jsp的基础知识,包括表达式,代码片段,jsp九大对象等. 编译指令是在jsp被转换成selvet时,使用的. 而动作指令,是在每次客户端请求时动态执行.

  4. 最大公约数(gcd):Euclid算法证明

    1个常识: 如果 a≥b 并且 b≤a,那么 a=b. 2个前提: 1)只在非负整数范围内讨论两个数 m 和 n 的最大公约数,即 m, n ∈ N. 2)0可以被任何数整除,但是0不能整除任何数,即 ...

  5. js给div动态添加控件,然后给这个控件动态添加事件

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx. ...

  6. IOS开发笔记(4)数据离线缓存与读取

    IOS开发笔记(4)数据离线缓存与读取 分类: IOS学习2012-12-06 16:30 7082人阅读 评论(0) 收藏 举报 iosiOSIOS 方法一:一般将服务器第一次返回的数据保存在沙盒里 ...

  7. 让libvirt支持win7运行2核以上

    现在人在部署OpenStack之后会发现按照配额运行Linux的虚拟机没有问题,但是运行windows的虚拟机会发现如果配置2个以上的核则无法识别,windows server也最多支持到4个核.无法 ...

  8. NOI十连测 第五测 T2

    思路:考虑建立可持久化线段树,第一层维护的是i这个位置的next位置,第二层,维护的是接下来走这个字符会到哪个节点. 感觉很巧妙啊,不愧是Claris #include<algorithm> ...

  9. jQuery对象转换为DOM对象

    第一种方法:借助数组下标来读取jQuery对象集合中的某个DOM元素对象. <script src="Scripts/jquery-1.4.1.js" type=" ...

  10. Silverlight信息加密 - 通过Rfc2898DeriveBytes类使用基于HMACSHA1的伪随机数生成器实现PBKDF2

    原文: http://blog.csdn.net/xuyue1987/article/details/6706600 在上一篇文章当中,介绍到了通过Silverlight获取web.config中的值 ...