让对话框内的控件在窗体大小发生变化时随之变化
来源:互联网 发布:2016网络售彩阿里布局 编辑:程序博客网 时间:2024/06/05 05:31
MFC应用】让对话框内的控件在窗体大小发生变化时随之变化
让控件跟着窗体的大小变化其实是不难的,只需要在WM_SIZE消息的处理函数里做一些工作就好了。之所以提出来,是因为自己一开始在做的时候对一系列的坐标太不容易搞清楚,所以,总会带来每个控件不知道要按照哪个坐标信息做调整的困惑。写下WM_SIZE消息的处理过程,廖以告诉自己不要忘记~~
首先为窗体增加WM_SIZE的处理函数。这个简单,不在赘述。
OnSize函数的实现如下:
void CDisassembly::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
// TODO: Add your message handler code here
static RECT LastWindowRect = {0, 0, 0, 0};
CWnd *hWin;
int ux = cx - LastWindowRect.right;
int uy = cy - LastWindowRect.bottom;
if((hWin = GetDlgItem(IDC_DISASSEMBLY)) != NULL)
{
RECT rect;
hWin->GetWindowRect(&rect);
ScreenToClient(&rect);
rect.right += ux;
rect.bottom += uy;
hWin->MoveWindow(&rect);
}
LastWindowRect.right = cx;
LastWindowRect.bottom = cy;
}
OnSize函数的后两个参数表示了ReSize之后的窗体的大小。为了对控件进行调整,在OnSize函数中定义了一个static RECT LastWindowRet,以便记录上一次窗口的大小。并将本次大小与上一次做对比:
int ux = cx - LastWindowRect.right;
int uy = cy - LastWindowRect.bottom;
求得两次窗口的大小差异后,通过GetDlgItem()函数获取控件的指针(这里,只能手工遍历所有的控件,不晓得是否有比较智能的方法可以获取到对话框的所有子窗口的列表),然后使用MoveWindow函数对控件的大小进行调整。
在本例中,IDC_DISASSEMBLY是一个EditBox,我希望它随着对话框的大小变化而变化,所以,首先利用GetWindowRect获取EditBox的现在大小,然后利用ScrenToClient将获取到的区域信息转换成对话框内部的相对坐标,最后再根据之前计算出的ux和uy对EditBox的宽度和高度进行调整,最后使用MoveWindow修改大小。
上面就是利用OnSize来让控件跟着变的方法。如果控件的大小不希望改变,而只希望改变位置,那么可以将控件的RECT的left、right、top、bottom同步做调整即可~
- 让对话框内的控件在窗体大小发生变化时随之变化
- 【MFC应用】让对话框内的控件在窗体大小发生变化时随之变化
- 在CFormView中如何让对话框内的控件大小跟随单文档的大小变化
- 如何让控件随窗体的大小变化而变化
- |非常实用的窗口变化时,控件也发生位置,大小变化 |基于对话框实现通过
- 控件随对话框窗体大小而变化
- 如何改变VB窗体的大小时控件随之变化
- MFC中让控件随窗体大小变化而变化中需要注意的问题
- 对话框控件大小随窗口的大小变化而变化
- WPF 自动调整控件的大小和位置,当窗体大小发生变化的时候
- MFC多个控件在对话框上的大小变化
- 让控件随窗体大小变化而变化~WinForms控件自适应窗体大小
- C#中怎样让控件大小随着窗体大小变化而变化?
- 窗体控件大小随窗体大小变化而变化
- 窗体控件大小随窗体大小变化而变化
- VB窗体控件大小随窗体大小变化而变化
- c#最大化设置窗体所有控件随之变化
- 包含tab控件时,,如何让子控件跟随对话框大小变化(上)
- 【C#】metadata 元数据
- C++中全角空格错误unknown character '0xa1'
- Linux环境下C使用的XML解析库:libxml2
- DLL 文件加载过程
- java内存泄露
- 让对话框内的控件在窗体大小发生变化时随之变化
- 配置Apache2.2.10负载平衡 + mod_jk-1.2.28 +Tomcat6集群(linux)
- Linux下的信号处理函数
- Howto Dynamically Insert Javascript And CSS
- Apache Ant使用指南
- OA未来趋势之七个演变
- 如何给window.setInterval的函数传递参数
- 使用HttpURLConnection发送POST请求
- 机器特征码