MFC中控件大小随对话框大小动态变化
来源:互联网 发布:一直是正在准备windows 编辑:程序博客网 时间:2024/05/15 00:49
首先在***Dlg.h头文件中定义
- CRect m_rectmin;//用于存储初始化对话框的大小
- CRect Button1Rectinit;//用于存储初始化控件的大小
CRect m_rectmin;//用于存储初始化对话框的大小CRect Button1Rectinit;//用于存储初始化控件的大小
然后定义一个变化函数
- //控件大小位置随对话框大小任意变化
- //参数是控件ID 控件初始化参数lpRect
- void autosize(UINT nID,LPRECT lpRect);
//控件大小位置随对话框大小任意变化 //参数是控件ID 控件初始化参数lpRect void autosize(UINT nID,LPRECT lpRect);
在***Dlg.cpp文件中,添加如下代码:
- ***Dlg::OnInitDialog()
- {
- ******
- GetWindowRect(&m_rectmin);//获取对话框大小初始值
- //获取对话框中各个控件的大小初始值
- CWnd *pWnd;
- pWnd = GetDlgItem(IDC_BUTTON1); //获取按钮1句柄
- pWnd->GetWindowRect(&Button1Rectinit);
- ********
- }
***Dlg::OnInitDialog(){ ******GetWindowRect(&m_rectmin);//获取对话框大小初始值//获取对话框中各个控件的大小初始值CWnd *pWnd;pWnd = GetDlgItem(IDC_BUTTON1); //获取按钮1句柄pWnd->GetWindowRect(&Button1Rectinit);********}
- void CPISProcToolsDlg::autosize(UINT nID,LPRECT lpRect)
- {
- CWnd *pWnd;
- pWnd = GetDlgItem(nID); //获取控件句柄
- if(!pWnd) return; //判断是否为空,因为对话框创建时会调用此函数,而当时控件还未创建
- CRect rect,recttemp; //定义rect为控件变化后的参数
- GetClientRect(&recttemp); //recttemp获取变化后对话框客户区大小
- //计算各个参数值,利用每个值主窗口的相对值计算
- rect.left = recttemp.Width() * lpRect->left/m_rectmin.Width();
- rect.right = recttemp.Width() * lpRect->right/m_rectmin.Width();
- rect.top = recttemp.Height() * lpRect->top/m_rectmin.Height();
- rect.bottom = recttemp.Height() * lpRect->bottom/m_rectmin.Height();
- pWnd->MoveWindow(rect);//调整控件位置
- }
void CPISProcToolsDlg::autosize(UINT nID,LPRECT lpRect){CWnd *pWnd;pWnd = GetDlgItem(nID); //获取控件句柄if(!pWnd) return; //判断是否为空,因为对话框创建时会调用此函数,而当时控件还未创建CRect rect,recttemp; //定义rect为控件变化后的参数 GetClientRect(&recttemp); //recttemp获取变化后对话框客户区大小//计算各个参数值,利用每个值主窗口的相对值计算rect.left = recttemp.Width() * lpRect->left/m_rectmin.Width();rect.right = recttemp.Width() * lpRect->right/m_rectmin.Width();rect.top = recttemp.Height() * lpRect->top/m_rectmin.Height();rect.bottom = recttemp.Height() * lpRect->bottom/m_rectmin.Height();pWnd->MoveWindow(rect);//调整控件位置}
然后重载WM_SIZE函数和WM_OnGetMinMaxInfo函数:
- void CPISProcToolsDlg::OnSize(UINT nType, int cx, int cy)
- {
- CDialog::OnSize(nType, cx, cy);
- // TODO: 在此处添加消息处理程序代码
- if(nType == SIZE_MINIMIZED) return;//防止窗口最小化时出现不可预知的问题
- autosize(IDC_BUTTON1,Button1Rectinit);
- }
void CPISProcToolsDlg::OnSize(UINT nType, int cx, int cy){CDialog::OnSize(nType, cx, cy);// TODO: 在此处添加消息处理程序代码if(nType == SIZE_MINIMIZED) return;//防止窗口最小化时出现不可预知的问题autosize(IDC_BUTTON1,Button1Rectinit);}
- void CPISProcToolsDlg::OnGetMinMaxInfo(MINMAXINFO* lpMMI)//限制对话框大小下限
- {
- // TODO: 在此添加消息处理程序代码和/或调用默认值
- lpMMI-> ptMinTrackSize.x = m_rectmin.Width() ; //宽
- lpMMI-> ptMinTrackSize.y = m_rectmin.Height() ; //高
- CDialog::OnGetMinMaxInfo(lpMMI);
- }
void CPISProcToolsDlg::OnGetMinMaxInfo(MINMAXINFO* lpMMI)//限制对话框大小下限{// TODO: 在此添加消息处理程序代码和/或调用默认值lpMMI-> ptMinTrackSize.x = m_rectmin.Width() ; //宽 lpMMI-> ptMinTrackSize.y = m_rectmin.Height() ; //高 CDialog::OnGetMinMaxInfo(lpMMI);}
本文章来自于【http://blog.csdn.net/fc841105/article/details/6717111】
- MFC中控件大小随对话框大小动态变化
- MFC中控件大小随对话框大小动态变化
- MFC对话框控件随对话框的大小变化
- MFC对话框中的控件随着对话框大小变化而变化
- [MFC] 控件大小跟随对话框大小比例变化 [大三TJB_708]
- [MFC] 控件大小跟随对话框大小比例变化 [大三TJB_708]
- [MFC] 控件大小跟随对话框大小比例变化 [转]
- MFC中控件大小和位置随对话框大小调整
- 对话框控件大小随窗口的大小变化而变化
- 控件随对话框窗体大小而变化
- MFC多个控件在对话框上的大小变化
- MFC控件随窗口大小变化
- MFC 控件随窗口大小变化
- MFC中的控件随窗口大小变化
- 动态改变对话框中控件的大小
- MFC对话框程序添加状态栏动态显示时间,随窗口大小变化
- MFC中让控件随窗体大小变化而变化中需要注意的问题
- MFC 控件随窗体大小变化而变化
- 浏览器内核的整理稿
- C++在运行状态下修改替换函数逻辑
- /dev/zero和/dev/null的区别
- 编程名言名句
- 目标追踪综述
- MFC中控件大小随对话框大小动态变化
- 从破烂堆里发现生的希望
- swift如何上传大于5G的文件
- 关于POS系统可靠性开发的一些考虑:
- Android关于含有SurfaceView的View会导致其他空间出问题的解决方案
- ios版本的helloworld
- 广州传智播客Java培训课程不是计算机专业的能学会吗?
- 超值广州PHP培训课程尽在广州传智播客
- oracle相关细节功能