对话框控件大小随窗口的大小变化而变化
来源:互联网 发布:有什么软件推广 编辑:程序博客网 时间:2024/04/29 01:08
我们经常会发现当我们将窗口最大化时,里面的控件并没有进行改变,接下来我就介绍一下此问题的解决办法,我们其实一般的都会把窗口的最大化按钮失效,是窗口不能进行最大化操作,但是有时候我们还是需要对窗口进行最大化操作的,下面我们可以通过添加WM_SIZE消息来解决此问题。
1 在XXDLg.h中添加
afx_msg void OnSize(UINT nType, int cx, int cy);
2 在XXDLg.h中添加
ON_WM_SIZE() 或者 ON_MESSAGE(WM_SIZE,OnSize)
3 在XXDlg类中添加以下成员变量
POINT oSize
4 在XXDlg类中OnInitDialog()添加以下代码
CRect rect; GetClientRect(&rect); //获取客户端区域的大小 oSize.x = rect.right - rect.left; //初始窗口的宽度 oSize.y = rect.bottom - rect.top; //初始窗口的高度
5在XXDlg类中添加以下成员函数
“`
void XXDlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
if (nType==SIZE_RESTORED || nType==SIZE_MAXIMIZED) //窗口变化的类型
{
float ratio[2]; //变化率 POINT newDialogSize; //新的窗口的大小 CRect newRect; GetClientRect(&newRect); //获取新的客户区的大小 newDialogSize.x = newRect.right - newRect.left; //新窗口的宽度 newDialogSize.y = newRect.bottom - newRect.top; //新窗口的高度 //得现在的对话框与以往对话框的大小比例 ratio[0] = (float)newDialogSize.x / oSize.x; ratio[1] = (float)newDialogSize.y / oSize.y; CRect Rect; int woc; //左右上角的数据 CPoint OldTLPoint, NewTLPint; //左上角 CPoint OldBRPoint, NewBRPint; //右下角 //列出所有控件 HWND hwndChild = ::GetWindow(m_hWnd,GW_CHILD); while(hwndChild) { //取得ID woc = ::GetDlgCtrlID(hwndChild); GetDlgItem(woc)->GetWindowRect(Rect); //获取控件的区域大小 ScreenToClient(Rect); //映射到客户端区域大小 OldTLPoint = Rect.TopLeft(); NewTLPint.x = long(OldTLPoint.x*ratio[0]); NewTLPint.y = long(OldTLPoint.y*ratio[1]); OldBRPoint = Rect.BottomRight(); NewBRPint.x = long(OldBRPoint.x*ratio[0]); NewBRPint.y = long(OldBRPoint.y*ratio[1]); Rect.SetRect(NewTLPint,NewBRPint); //重新设置控件区域大小 GetDlgItem(woc)->MoveWindow(Rect,TRUE); //显示到窗口上 hwndChild=::GetWindow(hwndChild, GW_HWNDNEXT); //获取下一个控件的句柄 } oSize = newDialogSize; //新的窗口大小作为下一次变化的依据 }
}
但是,经过多次的窗口变化后,里面的控件会失真,这个问题还未解决!
0 0
- 对话框控件大小随窗口的大小变化而变化
- 控件随对话框窗体大小而变化
- VFP如何控制一个窗口的所有控件的大小随窗口的变化而变化
- MFC对话框中的控件随着对话框大小变化而变化
- 单文档下List控件的添加及随窗口大小变化而变化的实现
- mfc控件自适应窗口大小,随窗口大小变化而变化
- 如何让控件随窗体的大小变化而变化
- 控件大小随窗口变化
- 【.Net码农】WPF下怎么让控件大小跟着窗口的大小变化而变化
- Listcontrol控件随着框架窗口的大小而变化
- C#控件随着窗口大小变化而自动变化
- C#控件随着窗口大小变化而自动变化
- 窗体控件大小随窗体大小变化而变化
- 窗体控件大小随窗体大小变化而变化
- VB窗体控件大小随窗体大小变化而变化
- 对话框上的控件的大小和位置随着对话框的大小的改变而变化
- MFC对话框控件随对话框的大小变化
- 控件随窗体大小而变化
- Nginx+Tomcat负载平衡
- 情绪ABC理论
- yii2如何引入自定义css或js文件
- mongodb创建、删除、切换
- 如何判断JAVA Script对象是否存在
- 对话框控件大小随窗口的大小变化而变化
- apache commons包简介
- 设计模式--类的关系
- 《林锐-高质量C/C++编程指南》笔记
- 几个SQL语句笔试题
- Linux内存占用情况分析
- bzoj 1030: [JSOI2007]文本生成器 (ac自动机上的dp)
- JSON和JSONP的区别,以及使用方法
- C# WPF设置窗口透明