OnSize
来源:互联网 发布:马来西亚华人知乎 编辑:程序博客网 时间:2024/06/05 03:34
void CtestOnSizeDlg::OnSize(UINT nType, int cx, int cy){ CDialogEx::OnSize(nType, cx, cy); // m_OldRect在构造函数里初始化为0,所以当第一个调OnSize()的 // 时候,缩放比例为1.0 int nWidth = m_OldRect.right - m_OldRect.left; int nHeight = m_OldRect.bottom - m_OldRect.top; CRect wndRect; CWnd* pWnd = NULL; double xProp = nWidth == 0 ? 1.0 : cx / (double)(nWidth); double yProp = nHeight == 0 ? 1.0 : cy / (double)(nHeight); // .h file defined CDWordArray m_ctrlInfo; // .cpp file Init // GetClientRect(&m_OldRect); // m_ctrlInfo.Add(ID); // m_ctrlInfo.Add(IDC_BUTTON1); for(int i = 0; i < m_ctrlInfo.GetSize(); i++) { pWnd = this->GetDlgItem(m_ctrlInfo[i]); if(NULL == pWnd) continue; pWnd->GetWindowRect(&wndRect); // 获取控件的屏幕坐标 ScreenToClient(&wndRect); wndRect.left = (LONG)(wndRect.left * xProp); // 计算转换后的客户区坐标 wndRect.right = (LONG)(wndRect.right * xProp); wndRect.top = (LONG)(wndRect.top * yProp); wndRect.bottom = (LONG)(wndRect.bottom * yProp); pWnd->MoveWindow(wndRect); // MoveWindow()是针对客户区坐标的 } this->GetClientRect(&m_OldRect);}// 响应用户的拖动,此时窗口尚未变更大小void CtestOnSizeDlg::OnSizing(UINT fwSide, LPRECT pRect){ // fwSide 确定用户调整的方向 // 取值1-8: Left:1, Right:2, Top:3, Bottom:6, Left+Right:4 // Right+Top:5, Left+Bottom:7, Right+Bottom:8 // pRect传入传出参数确定调整后的大小 // 响应调整:根据用户调整的方向,当用户从左边调宽度时,我们也从左边调 // 同理高度也是如此 // 大小限制:当移动的大小超出我们设置的限制时,调整传入的pRect /*if(fwSide == 2 || fwSide == 5 || fwSide == 8) pRect->right = pRect->left + MinWidth; else pRect->left = pRect->right - MinWidth; if(fwSide == 6 || fwSide == 7 || fwSide == 8) pRect->bottom = pRect->top + MinHeight; else pRect->top = pRect->bottom - MinHeight;*/ if((pRect->right - pRect->left) < 500) pRect->right = pRect->left + 500; if((pRect->bottom - pRect->top) < 300) pRect->bottom = pRect->top + 300; CDialogEx::OnSizing(fwSide, pRect); }void CtestOnSizeDlg::OnGetMinMaxInfo(MINMAXINFO* lpMMI){ // 下面四行代码限制对话框的最小尺寸,最小宽度为500px,最小高度为300px if(lpMMI->ptMinTrackSize.x <= 500) lpMMI->ptMinTrackSize.x = 500; if(lpMMI->ptMinTrackSize.y <= 300) lpMMI->ptMinTrackSize.y = 300; CDialogEx::OnGetMinMaxInfo(lpMMI);}
阅读全文
0 0
- OnSize
- OnSize
- OnSize函数
- CWnd::OnSize
- 消息OnSize的用法
- mfc onsize() 乱序
- MFC OnShowWindow和OnSize
- OnSize 改变控件的大小
- MFC Onsize()函数的作用
- MFC OnSize事件调用时间
- ONSIZE函数中调整CComboBox的问题
- ONSIZE函数中调整CComboBox的问题 .
- OnInitDialog与OnSize的执行顺序
- MFC 窗口自动填充 消息Onsize()
- 对话框的OnSize()和OnWindowPosChanged()的理解
- 函数onsize()与onsizing()区别
- CFormView::OnSize 控件句柄为空!!!
- MFC自绘窗口的时候,OnSize
- 读写配置文件
- 【React Native开发】
- 状态、缓存、映射
- aspx.cs 模拟post发起请求
- .jsp之无限滚动
- OnSize
- 【KM】POJ3565[Ants]题解
- 排序-快速排序-Java
- 2017/05/31 错误:找不到或无法加载主类 HelloWorld
- 设计一个ip网段黑名单过滤(网易面试题)
- 初学数据结构---查找
- Process进程
- 理解null关键字及集合或字符串需先判断null再判断长度的原因
- KM算法 模板