对话框程序最大化 控件以及字体大小自适应

工具栏你可以建立多个工具栏   不同分辨率加载不同的资源

至于控件  
InitDialog  中:

//获取未放大前对话框大小 

CRect rect;
::GetWindowRect(m_hWnd,rect);
ScreenToClient(rect);
m_nDlgWidth = rect.right - rect.left;
m_nDlgHeight = rect.bottom - rect.top;
//窗口最大化,并取得分辨率大小,根据此大小设置控件字体大小
ShowWindow(SW_MAXIMIZE);
m_nWidth = GetSystemMetrics(SM_CXSCREEN);
m_nHeight = GetSystemMetrics(SM_CYSCREEN);
//算出放大倍数,并记录  假设1280*1024  1024*768  800*768  三个分辨率
m_fWidthMul = float(m_nWidth)/float(m_nDlgWidth);
m_fHeightMul = float(m_nHeight)/float(m_nDlgHeight);
        //三种分辨率下设置三种字体,加载不同工具栏
if (m_nWidth >= 1279)
{
m_newFont.CreateFont(26,0,0,0,FW_NORMAL,0,0,0,1,OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH  ¦ FF_SWISS,_T("宋体"));
m_nToolBarID = IDR_TOOLBAR1;
}
else
{
if (m_nWidth >= 1000)
{
   m_newFont.CreateFont(16,0,0,0,FW_NORMAL,0,0,0,1,OUT_DEFAULT_PRECIS,
   CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH  ¦ FF_SWISS,_T("宋体"));
   m_nToolBarID = IDR_TOOLBAR2;
}
else
{
   m_newFont.CreateFont(12,0,0,0,FW_NORMAL,0,0,0,1,OUT_DEFAULT_PRECIS,
   CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH  ¦ FF_SWISS,_T("宋体"));
   m_nToolBarID = IDR_TOOLBAR3;
}
}

        ReSize(控件ID)//有多少个控件 调用多少次resize


类中添加一个函数  ReSize(int nAimID)

void ReSize(nAimID)

{

CRect AimRect;
GetDlgItem(nAimID)->GetWindowRect(AimRect);
ScreenToClient(AimRect);
//记录这个区域的左上角点和右下角点
CPoint OldTLPoint,AimTLPoint;
OldTLPoint = AimRect.TopLeft();
AimTLPoint.x = long(OldTLPoint.x *m_fWidthMul);
AimTLPoint.y = long(OldTLPoint.y *m_fHeightMul);
CPoint OldBRPoint,AimBRPoint;
OldBRPoint = AimRect.BottomRight();
AimBRPoint.x = long(OldBRPoint.x *m_fWidthMul);
AimBRPoint.y = long(OldBRPoint.y *m_fHeightMul);
//根据分辨率设置字体
GetDlgItem(nAimID)->SetFont(&m_newFont);
//在放大的窗口里,重绘放大后的窗口
AimRect.SetRect(AimTLPoint,AimBRPoint);
GetDlgItem(nAimID)->MoveWindow(AimRect,TRUE); 

}
 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值