首页 > 其他 > 详细

MFC多个控件在对话框上的大小变化

时间:2014-03-15 00:08:57      阅读:523      评论:0      收藏:0      [点我收藏+]


对话框中多个控件随窗体大小变化:

在类中加成员函数和成员变量: 
       

 void   SetControlInfo(WORD   CtrlId);  
protected: 
         int   m_nCx, m_nCy; 
         CDWordArray   m_ctlInfo; 


构造函数中初始化: 

m_nCx   =   m_nCy   =  0; 
加控件信息的函数定义: 
void   CTestDlg::SetControlInfo(WORD   CtrlId) 
 { 
         m_ctlInfo.Add(CtrlId); 
   
 } 


修改OnSize函数:

void   CTestDlg::OnSize(UINT   nType,   int   cx,  int   cy) 
 { 


        CDialog::OnSize(nType, cx, cy);
         float   dx =   (m_nCx  ==0) ? 1 : (float)((float)cx / (float)m_nCx); 
         float   dy =   (m_nCy  ==0) ? 1 : (float)((float)cy / (float)m_nCy);
   
         if(m_nCx) 
         { 
                 CRect   WndRect; 
                 CWnd   *pWnd; 
                 for(int   i  =   0;   i   <   m_ctlInfo.GetSize();   i++) 
                 { 
                        pWnd   =   GetDlgItem(m_ctlInfo[i]); 
                        if(!pWnd) 
                        { 
                                TRACE( "Control   ID   -  %d   NOT   FOUND!!\n ",m_ctlInfo[i]); 


                                continue; 
                        } 
   
                        pWnd-> GetWindowRect(&WndRect); 
                        ScreenToClient(&WndRect); 
   
                        WndRect.left   =   (int)(WndRect.left * dx); 
                        WndRect.right   =   (int)(WndRect.right*   dx); 
                        WndRect.bottom   =   (int)(WndRect.bottom*dy); 
                        WndRect.top   =   (int)(WndRect.top*dy); 
   
                        pWnd-> MoveWindow(&WndRect); 
                 } 
  
         } 
         m_nCx   =   cx; 
         m_nCy   =   cy; 
 } 
   


在OnInitDialog函数中加入控件ID:    

SetControlInfo(IDC_BUTTON); 
  

    

MFC多个控件在对话框上的大小变化,布布扣,bubuko.com

MFC多个控件在对话框上的大小变化

原文:http://blog.csdn.net/dodosharp/article/details/21256705

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!