MFC/VC++/VS 控件随对话框尺寸变化
来源:互联网 发布:dnd跑团软件 编辑:程序博客网 时间:2024/04/29 00:52
1. 获取对话框尺寸
CRect m_rect; //用于保存原对话框大小
GetClientRect(&m_rect); //获取对话框的大小
2. OnSize 消息
if (m_rect.Width() == 0 || m_rect.Height() == 0){return;}if(nType != SIZE_MINIMIZED ) //判断窗口是不是最小化了,因为窗口最小化之后 ,窗口的长和宽会变成0,当前一次变化的时就会出现除以0的错误操作{CWnd *pWnd = NULL; pWnd = GetWindow(GW_CHILD); while(pWnd != NULL) { ChangeCtrlSize(pWnd->GetDlgCtrlID(), cx, cy); // 对每一个控件依次做调整pWnd=pWnd-> GetNextWindow(GW_HWNDNEXT); }GetClientRect(&m_rect); //最后要更新对话框的大小,当做下一次变化的旧坐标}
3. ChangeCtrlSize
void XXXDlg::ChangeCtrlSize(UINT nID, int ix, int iy) //nID为控件ID,x,y分别为对话框的当前长和宽{float fx = float(ix);float fy = float(iy);CWnd *pWnd = NULL;pWnd = GetDlgItem(nID); if(pWnd != NULL) //判断是否为空,因为在窗口创建的时候也会调用OnSize函数,但是此时各个控件还没有创建,Pwnd为空{CRect rect; pWnd->GetWindowRect(&rect); //获取控件变化前的大小ScreenToClient(&rect); //将控件大小装换位在对话框中的区域坐标rect.left = int(rect.left * fx / (float)m_rect.Width()); //按照比例调整空间的新位置rect.top = int(rect.top * fy / (float)m_rect.Height());rect.bottom = int(rect.bottom * fy / (float)m_rect.Height());rect.right = int(rect.right * fx / (float)m_rect.Width());pWnd->MoveWindow(rect); //伸缩控件}}
0 0
- MFC/VC++/VS 控件随对话框尺寸变化
- MFC对话框控件随对话框的大小变化
- MFC中控件大小随对话框大小动态变化
- MFC中控件大小随对话框大小动态变化
- [MFC]动态改变对话框控件位置尺寸
- MFC对话框中的控件随着对话框大小变化而变化
- MFC 控件跟随对话框变化比例变化 笔记
- MFC中的控件如何随着对话框变化而变化
- MFC 控件随窗口尺寸变化自动调整位置及大小
- VS/MFC实例:对话框--为对话框添加控件
- MFC对话框程序最大化时控件相应变化
- [MFC] 控件大小跟随对话框大小比例变化 [大三TJB_708]
- MFC多个控件在对话框上的大小变化
- [MFC] 控件大小跟随对话框大小比例变化 [大三TJB_708]
- [MFC] 控件大小跟随对话框大小比例变化 [转]
- 控件随对话框窗体大小而变化
- VC 对话框 控件 随对话框大小改变
- 对话框控件大小随窗口的大小变化而变化
- 欢迎使用CSDN-markdown编辑器
- Linux文件搜索命令
- MYSQL 导出与导入sql文件
- 微信红包开发设计思路
- Spring 配置读取config.properties配置信息
- MFC/VC++/VS 控件随对话框尺寸变化
- CodeForces 616D Longest k-Good Segment(尺取)
- AndroidStudio项目导入到Eclipse项目
- 基于隐马尔可夫模型的有监督词性标注
- javaMail小工具--发送邮件
- JSP与Servlet间数据传输(session登录注销)
- 1077: [SCOI2008]天平
- SynchronousQueue 同步队列
- DOM的学习笔记