国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

MFC 控件隨窗口大小變化

2019-11-08 02:05:33
字體:
來源:轉載
供稿:網友

首先放一下參考的鏈接。。

http://blog.sina.com.cn/s/blog_4b5039210100dzkd.html

http://bbs.csdn.NET/topics/350153879

http://blog.csdn.Net/liuy_yy/article/details/7219616

以上第一篇文章博主的方法雖然可以實現控件按比例跟隨窗口變大變小,但問題來了。。

button控件我們不需要他變大啊(變大要丑死),而編輯框控件(Edit Control)到邊角的距離應該保持不變。

所以必須換一種方法。。

第二篇文章是一個帖子,里面說到可以用MoveWindow/SetWindowPos自己調整按鈕的位置或者大小。

操作方式類似于第一篇文章博主的做法

 1   首先要知道對話框大小是否改變,改變了多少,我們應該記錄當前對話框的大小。

      現在Dlg上面拖進來一個Edit  Control  ,命名為IDC_EDIT1。

     在CTestDlg對話框類(根據工程名的不同,讀者自己找自己的對話框類,一般以Dlg結尾)中添加成員變量 CRect m_rect 他是用來記錄當前對話框的大小。

      我們在OnInitDialog()函數中獲取對話框創建時的大小:GetClientRect(&m_rect);

 2   增加消息WM_SIZE的消息響應函數OnSize(): 只要對話框大小發生變化,就會調用該函數。

      PS:  消息響應函數的添加方法可參考文章末尾

 3   在OnSize()函數中增加如下代碼:(最簡單的為例子,就一個確定按鈕,取消按鈕和一個編輯框)

 

 void CTestDlg::OnSize(UINT nType, int cx, intcy){     CDialog::OnSize(nType, cx, cy);      // TODO: Add your message handler code here 

      CWnd *pWnd;       pWnd =GetDlgItem(IDC_EDIT1);    //獲取控件的句柄     if(pWnd)  //判斷是否為空,因為對話框創建時會調用此函數,而當時控件還未創建     {              CRectrect;   //獲取控件變化前的大小  

              pWnd->GetWindowRect(&rect);              ScreenToClient(&rect);//將控件大小轉換為在對話框中的區域坐標              //        cx/m_rect.Width()為對話框在橫向的變化比例            

               rect.left=rect.left;//調整控件大小               rect.right=         cy  -  ( m_rect.Width() -  rect.right  ) ;               rect.top=rect.top;               rect.bottom=    cy   -   (  m_rect.Height() - rect.bottom   ) ;

               pWnd->MoveWindow(rect);//設置控件大小

        }         GetClientRect(&m_rect);//將變化后的對話框大小設為舊大小 }

歸根結底的思路就是:用舊的坐標,通過數學計算得到新的坐標。

上面那個示例的運行結果,確定取消按鈕是不會動的。。

如果想要讓他們也動,需要重新修改坐標那塊的代碼。

累。。。

老師告訴我們,如果有一個功能實現不了,那肯定是你不知道,不是人家實現不了。

肯定會有更簡單的方法。。

于是找到了這個東西   easysize

使用方法很簡單。

1、在stdafx.h中引用EasySize.h頭文件(同時將EasySize.h放到你的程序目錄中)

 

2、在類定義中添加DECLARE_EASYSIZE

[html] view plain copyPRint?<pre name="code" class="html">class CEasySizeDemoDlg : public CDialog  {       DECLARE_EASYSIZE    //(此處沒有分號)       ``````  };  
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 天峨县| 塘沽区| 西充县| 东丽区| 上蔡县| 珲春市| 佛山市| 泌阳县| 页游| 兴海县| 海门市| 和硕县| 子洲县| 乳源| 九江县| 瑞昌市| 柞水县| 南安市| 万全县| 安远县| 龙南县| 姚安县| 绥阳县| 邢台市| 诸暨市| 调兵山市| 德兴市| 英山县| 靖西县| 依安县| 谷城县| 梓潼县| 磐石市| 永川市| 松滋市| 县级市| 观塘区| 军事| 陆河县| 定陶县| 界首市|