mfc里各控件随窗口的放缩而放缩
来源:互联网 发布:vb制作计算器 编辑:程序博客网 时间:2024/05/17 20:30
2、在对话框的OnInitDialog()函数中获取对话框创建时的大小:GetClientRect(&m_rect);
3、在WM_SIZE的响应函数OnSize()中加入以下代码:
C/C++ code
CWnd *pWnd;
pWnd = GetDlgItem(IDC_LIST); //获取控件句柄
if(pWnd && nType!=1)//判断是否为空,因为对话框创建时会调用此函数,而当时控件还未创建
{
CRect rect; //获取控件变化前大小
pWnd->GetWindowRect(&rect);
ScreenToClient(&rect);//将控件大小转换为在对话框中的区域坐标
// cx/m_rect.Width()为对话框在横向的变化比例
rect.left=rect.left*cx/m_rect.Width();/////调整控件大小
rect.right=rect.right*cx/m_rect.Width();
rect.top=rect.top*cy/m_rect.Height();
rect.bottom=rect.bottom*cy/m_rect.Height();
pWnd->MoveWindow(rect);//设置控件大小
}
GetClientRect(&m_rect);//将变化后的对话框大小设为旧大小
以下程序为例
void CFingureDectectDlg::ReSize(){
//
CPoint Newp; //获取现在对话框的大小
CRect recta;
GetClientRect(&recta); //取客户区大小
Newp.x = recta.right - recta.left;
Newp.y = recta.bottom - recta.top;
fsp[0] = (float)Newp.x / WinRect_old.x; //对话框里的控件宽度放大或缩小的倍数
fsp[1] = (float)Newp.y / WinRect_old.y; //对话框里的控件高度放大或缩小的倍数
CRect Rect;
int woc;
CPoint OldTLPoint, TLPoint; //左上角
CPoint OldBRPoint, BRPoint; //右下角
HWND hwndChild = ::GetWindow(m_hWnd, GW_CHILD); //列出所有控件 //自己添加的对话框自动放大
while (hwndChild)
{
woc = ::GetDlgCtrlID(hwndChild);//取得ID
GetDlgItem(woc)->GetWindowRect(Rect);
ScreenToClient(Rect);
OldTLPoint = Rect.TopLeft();
TLPoint.x = long(OldTLPoint.x*fsp[0]);
TLPoint.y = long(OldTLPoint.y*fsp[1]);
OldBRPoint = Rect.BottomRight();
BRPoint.x = long(OldBRPoint.x *fsp[0]);
BRPoint.y = long(OldBRPoint.y *fsp[1]);
Rect.SetRect(TLPoint, BRPoint);
GetDlgItem(woc)->MoveWindow(Rect, TRUE);
hwndChild = ::GetWindow(hwndChild, GW_HWNDNEXT);
}
WinRect_old = Newp;
}
其中整大小的代码提出来单独写个函数,每个控件调用一次
HWND
hwndChild=::GetWindow(m_hWnd,GW_CHILD);
int
nID= 0;
while
(hwndChild)
{
nID=::GetDlgCtrlID(hwndChild);
//获取控件ID
ReSize(nID);
//传入ID,调整控件大小
hwndChild=::GetWindow(hwndChild, GW_HWNDNEXT);
}
- mfc里各控件随窗口的放缩而放缩
- PYQT5 实现 无frame窗口的拖动和放缩
- MFC 控件随窗口大小而改变
- GraphicsView的旋转,放缩
- 如何在一个<td>里放2个以上的<form>而不换行
- MFC窗口控件随主窗口大小改变而伸缩
- 运放输入阻抗的而选取
- 点击一个checkbox控件,使得Datagrid里的模版里放的checkbox全部选中
- 点击一个checkbox控件,使得Datagrid里的模版里放的checkbox全部选中
- wxWidgets中wxStaticBitmap放缩不正常,引起其他控件放缩不正常
- MFC Dialog 如何屏蔽鼠标放在标题栏上移动窗口的功能
- 关于MFC中全屏显示及空间放缩
- ListView里的放RelativeLayout 报错
- JQ attr()里放变量的方法
- Revit二次开发 体量里的放样
- 图像放缩方法
- 图片放缩
- 图像放缩算法
- [LeetCode]--168. Excel Sheet Column Title
- linux的一些基本安全策略
- LeetCode 371:Sum of Two Integers
- 关于Docker的常见疑问
- 详解WSGI
- mfc里各控件随窗口的放缩而放缩
- java数据结构-链表的实现
- 软件测试
- 201509-4-高速公路
- 利用PHP判断iPhone、iPad、Android、PC设备
- 机器人时代即将来临?
- Codeforces--368C--Sereja and Algorithm(规律)
- ubuntu安装软件时提示有未能满足的依赖关系
- java数据结构-链表实现堆栈 控制插入的方式,成为有序链表