mfc随着窗口大小调整控件大小
来源:互联网 发布:0基础学c语言行吗 编辑:程序博客网 时间:2024/05/17 07:35
(转自:http://blog.163.com/scuqifuguang@126/blog/static/171370086201232741358711/)
对话框的大小变化后,假若对话框上的控件大小不变化,看起来会比较难看。下面就介绍怎么让对话框上的控件随着对话框的大小的变化自动调整。
首先明确的是Windows有一个WM_SIZE消息响应函数,这个函数在对话框大小发生变化的时候调用,所以我们可以记录下原来对话框的大小,还有当前对话框的大小(这个不用自己算,系统已给出),然后根据控件做出相应比例的调整。
比如原来对话框大小为a,现在为b,原来控件大小为c,那么现在的控件大小应该为c*b/a;(注意a不能为0)。
看实例:(黑体字为添加的代码!!)
假设对话框类为CMyDlg类,那么首先设置一个变量
CRect m_rect; //用于保存原对话框大小
那么在对话框创建的时候先获得对话框的大小
BOOL CMyDlg::On
{
.........................
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
// TODO: Add extra initialization here
GetClientRect(&m_rect); //获取对话框的大小
return TRUE; // return TRUE unless you set the focus to a control
}
然后再手动添加一个函数,用以实现具体的变化
void CMyDlg::ChangeSize(UINT nID, int x, int y) //nID为控件ID,x,y分别为对话框的当前长和宽
{
CWnd *pWnd;
pWnd=GetDlgItem(nID);
if(pWnd!=NULL) //判断是否为空,因为在窗口创建的时候也会调用On
{
CRect rec;
pWnd->GetWindowRect(&rec); //获取控件变化前的大小
ScreenToClient(&rec); //将控件大小装换位在对话框中的区域坐标
rec.left=rec.left*x/m_rect.Width(); //按照比例调整空间的新位置
rec.top=rec.top*y/m_rect.Height();
rec.bottom=rec.bottom*y/m_rect.Height();
rec.right=rec.right*x/m_rect.Width();
pWnd->MoveWindow(rec); //伸缩控件
}
}
最后添加windows消息响应函数On
void CMyDlg::On
{
CDialog::On
// TODO: Add your message handler co
if(nType!=SIZE_MINIMIZED ) //判断窗口是不是最小化了,因为窗口最小化之后 ,窗口的长和宽会变成0,当前一次变化的时就会出现除以0的错误操作
{
ChangeSize(IDC_LIST1,cx,cy); //对每一个控件依次做调整
ChangeSize(IDC_LIST2,cx,cy);
ChangeSize(IDC_BUTTON1,cx,cy);
ChangeSize(IDC_BUTTON2,cx,cy);
GetClientRect(&m_rect); //最后要更新对话框的大小,当做下一次变化的旧坐标;
}
}
- mfc随着窗口大小调整控件大小
- MFC如何使控件大小随着对话框大小自动调整
- MFC如何使控件大小随着对话框大小自动调整
- MFC如何使控件大小随着对话框大小自动调整
- MFC如何使控件大小随着对话框大小自动调整
- MFC如何使控件大小随着对话框大小自动调整
- MFC如何使控件大小随着对话框大小自动调整
- MFC如何使控件大小随着对话框大小自动调整
- MFC如何使控件大小随着对话框大小自动调整
- MFC如何使控件大小随着对话框大小自动调整
- MFC如何使控件大小随着对话框大小自动调整
- MFC如何使控件大小随着对话框大小自动调整
- MFC如何使控件大小随着对话框大小自动调整
- MFC如何使控件大小随着对话框大小自动调整
- MFC如何使控件大小随着对话框大小自动调整
- 控件随着窗口大小变化
- 控件随着窗口大小变化
- C++ MFC控件随着窗口大小变化而自适应
- 用户画像的一些相关信息链接
- Java7中的switch支持String的实现细节
- 关于Zxing使用时的一些Demo点
- python目录操作
- TCP/IP-------MTU、MSS、分片
- mfc随着窗口大小调整控件大小
- 第十二周 课后实践:项目三——日期时间类
- Linux下 shell获取本机ip地址
- HOJ1867 经理的烦恼
- android学习笔记(二)
- MVC之ActionResult
- 重磅!详解阿里研究院互联网+报告
- Correlation Filter in Visual Tracking系列一
- Spark+Cassandra优化