青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

VC++控件自適應屏幕的方法

1.首先在初始化函數中,FormView在OnInitialUpdate(),Dialog在OnInitDialog()中初始化控件的大小。

view plaincopy to clipboardprint?
01.//開始初始化控件大小  
02. m_IsInitialed = false;  
03. 
04. CRect m_ClientRect;  
05. this->GetClientRect(&m_ClientRect);  
06. CSize m_Forsize;  
07. m_Forsize = GetTotalSize();//在資源編輯器中定好大小后,程序運行時大小(不管最大化和最小化,該大小均為同一個值),客戶區大于或等于顯示的大小  
08. double m_x = (double)m_ClientRect.Width() / m_Forsize.cx;//寬度方向發大倍數  
09. double m_y = (double)m_ClientRect.Height() / m_Forsize.cy;//高度方向發大倍數  
10. 
11. //調整控件的大小  
12. CWnd *pWnd = NULL;   
13. pWnd = GetWindow(GW_CHILD);  
14. while(pWnd)//判斷是否為空,因為對話框創建時會調用此函數,而當時控件還未創建  
15. {  
16.  CRect rect;   //獲取控件變化前大小  
17.  pWnd->GetWindowRect(&rect);  
18.  ScreenToClient(&rect);//將控件大小轉換為在對話框中的區域坐標  
19.  m_ControlRect.insert(pair<int, CRect>(pWnd->GetDlgCtrlID(), rect));//保存控件的初始大小,以便在OnSize函數中繼續使用  
20.  int width = rect.Width();  
21.  int height = rect.Height();  
22. 
23.  WCHAR szBuf[256];  
24.  GetClassName(pWnd->m_hWnd,szBuf,256);           
25.  if( _tcsicmp(szBuf,_T("Edit")) == 0)     
26.  {   
27.   //Edit只是位置變化,大小沒有變  
28.   rect.top = m_y * rect.top;  
29.   rect.left = m_x * rect.left;  
30.   rect.bottom = rect.top + height;  
31.   rect.right = rect.left + width;  
32.  }  
33.  else 
34.  {  
35.   //其它控件位置和大小均變化  
36.   rect.top = m_y * rect.top;  
37.   rect.left = m_x * rect.left;  
38.   rect.bottom = m_y * rect.bottom;  
39.   rect.right = m_x * rect.right;  
40.  }  
41. 
42.  pWnd->MoveWindow(&rect);//設置控件大小  
43.  pWnd = pWnd->GetWindow(GW_HWNDNEXT);  
44. }  
45.   
46. //控件初始化結束  
47. m_IsInitialed = true; 
//開始初始化控件大小
 m_IsInitialed = false;

 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函數中繼續使用
  int width = rect.Width();
  int height = rect.Height();

  WCHAR szBuf[256];
  GetClassName(pWnd->m_hWnd,szBuf,256);        
  if( _tcsicmp(szBuf,_T("Edit")) == 0)  
  {
   //Edit只是位置變化,大小沒有變
   rect.top = m_y * rect.top;
   rect.left = m_x * rect.left;
   rect.bottom = rect.top + height;
   rect.right = rect.left + width;
  }
  else
  {
   //其它控件位置和大小均變化
   rect.top = m_y * rect.top;
   rect.left = m_x * rect.left;
   rect.bottom = m_y * rect.bottom;
   rect.right = m_x * rect.right;
  }

  pWnd->MoveWindow(&rect);//設置控件大小
  pWnd = pWnd->GetWindow(GW_HWNDNEXT);
 }
 
 //控件初始化結束
 m_IsInitialed = true;
 

2.如果界面在運行時大小可以改變,則在OnSize函數中加入如下代碼

view plaincopy to clipboardprint?
01.// TODO: 在此處添加消息處理程序代碼  
02.    CFormView::ShowScrollBar(SB_BOTH, false);//設置沒有滾動條,視情況而定。  
03.         //在界面不是最小化并且已經初始化完畢  
04.    if (!IsIconic() && m_IsInitialed)  
05.    {  
06.        CSize m_Forsize;  
07.        m_Forsize = GetTotalSize();  
08.        double m_x = (double)cx / m_Forsize.cx;  
09.        double m_y = (double)cy / m_Forsize.cy;  
10. 
11.                //讀取控件的初始大小  
12.        map<int, CRect>::iterator pos = m_ControlRect.begin();  
13.        for (; pos != m_ControlRect.end(); ++pos)  
14.        {  
15.            CRect rect = pos->second;  
16.            int width = rect.Width();  
17.            int height = rect.Height();  
18. 
19.            WCHAR szBuf[256];  
20.            GetClassName(GetDlgItem(pos->first)->m_hWnd,szBuf,256);                     
21.            if( _tcsicmp(szBuf,_T("Edit")) == 0)     
22.            {   
23.                rect.top = m_y * rect.top;  
24.                rect.left = m_x * rect.left;  
25.                rect.bottom = rect.top + height;  
26.                rect.right = rect.left + width;  
27.            }  
28.            else 
29.            {  
30.                rect.top = m_y * rect.top;  
31.                rect.left = m_x * rect.left;  
32.                rect.bottom = m_y * rect.bottom;  
33.                rect.right = m_x * rect.right;  
34.            }  
35.            GetDlgItem(pos->first)->MoveWindow(rect);  
36.        }  
37.    } 
// TODO: 在此處添加消息處理程序代碼
 CFormView::ShowScrollBar(SB_BOTH, false);//設置沒有滾動條,視情況而定。
         //在界面不是最小化并且已經初始化完畢
 if (!IsIconic() && m_IsInitialed)
 {
  CSize m_Forsize;
  m_Forsize = GetTotalSize();
  double m_x = (double)cx / m_Forsize.cx;
  double m_y = (double)cy / m_Forsize.cy;

                //讀取控件的初始大小
  map<int, CRect>::iterator pos = m_ControlRect.begin();
  for (; pos != m_ControlRect.end(); ++pos)
  {
   CRect rect = pos->second;
   int width = rect.Width();
   int height = rect.Height();

   WCHAR szBuf[256];
   GetClassName(GetDlgItem(pos->first)->m_hWnd,szBuf,256);         
   if( _tcsicmp(szBuf,_T("Edit")) == 0)  
   {
    rect.top = m_y * rect.top;
    rect.left = m_x * rect.left;
    rect.bottom = rect.top + height;
    rect.right = rect.left + width;
   }
   else
   {
    rect.top = m_y * rect.top;
    rect.left = m_x * rect.left;
    rect.bottom = m_y * rect.bottom;
    rect.right = m_x * rect.right;
   }
   GetDlgItem(pos->first)->MoveWindow(rect);
  }
 }

或在OnShowWindow()函數中加入也可以(特別是在對話框作為tabpage時)

 

本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/ybw20041910/archive/2010/06/19/5679730.aspx

posted on 2010-11-29 11:06 wrh 閱讀(1687) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


導航

<2011年1月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
303112345

統計

常用鏈接

留言簿(19)

隨筆檔案

文章檔案

收藏夾

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            老司机午夜精品视频在线观看| 亚洲午夜一区| 欧美在线free| 91久久久一线二线三线品牌| 亚洲精品美女| 亚洲黄色在线| 黄色一区二区三区| 国产精品一区二区三区久久久| 久久频这里精品99香蕉| 午夜日韩电影| 久久精品国产v日韩v亚洲| 欧美一区二区三区精品| 亚洲一级片在线看| 这里只有精品丝袜| 亚洲欧美日韩在线高清直播| 亚洲男女毛片无遮挡| 亚洲大胆人体视频| 一区二区三区无毛| 亚洲国产精品一区在线观看不卡 | 午夜精品影院| 久久亚洲私人国产精品va媚药| 另类酷文…触手系列精品集v1小说| 欧美 亚欧 日韩视频在线| 99精品国产在热久久下载| 久久动漫亚洲| 国产精品综合久久久| 亚洲人www| 欧美在线网址| 日韩视频在线免费观看| 久久这里只有| 伊人久久久大香线蕉综合直播| 日韩亚洲一区在线播放| 久久亚洲综合色| 亚洲一区二区成人在线观看| 久久综合九色综合久99| 欧美日韩岛国| 亚洲免费av片| 久久免费99精品久久久久久| 欧美激情久久久| 一区二区冒白浆视频| 9久草视频在线视频精品| 久久久久成人网| 欧美午夜精品久久久久久浪潮 | 国产一区二区三区在线观看视频| 伊大人香蕉综合8在线视| 日韩亚洲欧美成人| 国产日本欧美一区二区| 亚洲电影免费在线观看| 日韩一区二区免费高清| 久久综合色8888| 久久久国产视频91| 国产在线一区二区三区四区| 亚洲一区二区三区涩| 性做久久久久久| 欧美福利在线观看| 久久精品女人的天堂av| 国产日韩成人精品| 久久久91精品国产| 性伦欧美刺激片在线观看| 国产伦精品一区二区三区在线观看 | 亚洲欧洲99久久| 国产精品精品视频| 亚洲一区二区三区在线| 亚洲久久成人| 国产精品yjizz| 欧美伊人久久| 久久久夜夜夜| 亚洲少妇中出一区| 午夜精品久久久久久久99热浪潮| 国产精品捆绑调教| 可以免费看不卡的av网站| 99国内精品久久久久久久软件| 久久精品国产精品| 亚洲伦理在线免费看| av不卡免费看| 久久一区视频| 亚洲美女在线看| 亚洲午夜国产一区99re久久| 国产伦精品一区二区三区照片91| 国产精品视频观看| 久久人人97超碰国产公开结果| 久久精品中文字幕一区二区三区| 夜夜爽av福利精品导航| 亚洲欧美日韩国产一区二区| 在线精品亚洲一区二区| 欧美成人精品一区| 亚洲精品乱码久久久久久久久| 一本大道久久a久久精品综合| 欧美视频一区在线| 欧美精品一区二区久久婷婷| 亚洲自拍三区| 亚洲视频二区| 一本色道久久综合亚洲精品高清| 久久久亚洲国产美女国产盗摄| 亚洲深夜影院| 日韩亚洲不卡在线| 国语自产精品视频在线看抢先版结局 | 亚洲国产美女| 欧美一区二区三区在线播放| 99国产精品国产精品毛片| 欧美午夜电影网| 亚洲午夜精品网| 一区二区三区免费看| 欧美国产日韩一区| 日韩一二三区视频| 在线观看日韩欧美| 欧美黄色aaaa| 夜夜躁日日躁狠狠久久88av| 亚洲人成人一区二区三区| 久久av一区二区三区| 久热国产精品视频| 亚洲片在线观看| 欧美日韩在线高清| 亚洲国产第一页| 久久精品成人一区二区三区蜜臀| 国产在线观看91精品一区| 亚洲黄网站黄| 久久爱另类一区二区小说| 亚洲日本va在线观看| 欧美日韩一区三区| 久久精品夜色噜噜亚洲aⅴ | 欧美高清视频在线| 亚洲午夜激情免费视频| 欧美三级资源在线| 久久久一二三| 久久精品国产v日韩v亚洲| 亚洲精品欧美日韩| 欧美成人xxx| 巨乳诱惑日韩免费av| 欧美一区二区三区在线观看| 欧美激情影院| 国产精品www网站| 欧美日本成人| 久久免费高清视频| 久久狠狠婷婷| 免费日韩av| 欧美刺激性大交免费视频| 快she精品国产999| 亚洲欧美中文日韩v在线观看| 最新日韩中文字幕| 国产精品视频专区| 精品动漫3d一区二区三区| 国产亚洲精品久久久久婷婷瑜伽| 欧美色大人视频| 国产女主播一区| 亚洲国产裸拍裸体视频在线观看乱了中文 | 国产亚洲aⅴaaaaaa毛片| 国产人久久人人人人爽| 亚洲一区二区动漫| 久久精品一区| 亚洲国产精品成人一区二区 | 亚洲国产精品999| 亚洲国产精品va在线观看黑人| 99精品国产高清一区二区| 亚洲精品日本| 久久久www免费人成黑人精品 | 亚洲日本中文| 亚洲性线免费观看视频成熟| 亚洲欧美日韩中文播放| 久久一区国产| 国产精品毛片在线| 国产精品尤物福利片在线观看| 亚洲国产婷婷综合在线精品 | 久久久久久亚洲精品杨幂换脸| 久久久久一区二区| 一本久道久久综合狠狠爱| 久久超碰97人人做人人爱| 欧美成黄导航| 久久亚洲一区| 欧美激情亚洲精品| 在线一区二区三区四区五区| 欧美激情一区在线观看| 国产亚洲成av人在线观看导航| 在线观看成人网| 久久久久久网站| 欧美一区影院| 国产午夜精品久久久| 欧美一区亚洲| 国产九九精品视频| 久久gogo国模裸体人体| 性欧美videos另类喷潮| 国产精品男人爽免费视频1| 午夜精品一区二区三区在线视| 亚洲午夜久久久久久久久电影院| 欧美日韩国产一区二区| 亚洲自拍偷拍福利| 欧美一区二区三区在线视频 | 亚洲视频高清| 韩国成人精品a∨在线观看| 久久精品午夜| 欧美国产日韩免费| 久久福利毛片| 久久国产夜色精品鲁鲁99| 91久久精品国产91久久性色tv| 亚洲精品免费在线观看| 国产精品自在在线| 亚洲大胆视频| 韩曰欧美视频免费观看| 99视频超级精品| 日韩视频二区|