读书人

网下一片控件自适应的伪代码//最一句代

发布时间: 2013-01-11 11:57:35 作者: rapoo

网上一片控件自适应的伪代码//最一句代码声明代码没有,能否补全?


CRect m_ClientRect;
this->GetClientRect(&m_ClientRect);
CSize m_Forsize;
m_Forsize = GetTotalSize();
//在资源编辑器中定好大小后,程序运行时大小(不管最大化和最小化,该大小均为同一个值),客户区大于或等于显示的大小
double m_x = (double)m_ClientRect.Width() / m_Forsize.cx;
//宽度方向发大倍数
double m_y = (double)m_ClientRect.Height() / m_Forsize.cy;
//高度方向发大倍数
//调整控件的大小
CWnd *pWnd = NULL;
pWnd = GetWindow(GW_CHILD);
while(pWnd)
//判断是否为空,因为对话框创建时会调用此函数,而当时控件还未创建
{
CRect rect;
//获取控件变化前大小
pWnd->GetWindowRect(&rect);
ScreenToClient(&rect);
//将控件大小转换为在对话框中的区域坐标
m_ControlRect.insert(pair<int, CRect>(pWnd->GetDlgCtrlID(), rect));
//保存控件的初始大小,以便在OnSize函数中继续使用

[解决办法]
pair是将2个数据组合成一个数据,当需要这样的需求时就可以使用pair,如stl中的map就是将key和value放在一起来保存。另一个应用是,当一个函数需要返回2个数据的时候,可以选择pair。 pair的实现是一个结构体,主要的两个成员变量是first second 因为是使用struct不是class,所以可以直接使用pair的成员变量。

make_pair和pair目的相同,就是写法不同
[解决办法]
pair是一个模板类。
搜索 “stl pair”

读书人网 >VC/MFC

热点推荐