當視窗大小變化時,如最大化、最小化時,控制項位置和大小並沒有變化,本文實現此功能。
主介面為對話方塊,有最小化、最大化、關閉等功能。
當視窗變化時,響應 onsize 函式,並計算各控制項位置,按比例縮放。
在對話方塊類嚮導中新增 wm_size 訊息。其函式定義如下:
afx_msg void onsize(uint ntype, int cx, int cy);
在對話方塊標頭檔案宣告變數:
crect m_crect;
用於儲存位置資訊。
在oninitdialog函式中先獲取位置資訊並儲存:
getclientrect(&m_crect);
同一檔案,實現控制項變化的計算,**如下:
void ctestdlg::changesize(int ctrid, int cx, int cy)
}
先獲取控制項id,得到控制項大小,再根據當前的 x、y計算比例,再移動控制項。
在 onsize 函式中呼叫 changesize 函式:
void ctestdlg::onsize(uint ntype, int cx, int cy)
; for (int i = 0; i < sizeof(cdlgitem) / sizeof(cdlgitem[0]); i++)
getclientrect(&m_crect);// 將變化後的對話方塊大小設為舊大小
}
根據指定的控制項id進行縮放。注意,有些控制項可以不進行縮放,比如,左上方的提示語相關控制項,不需要移動。 MFC控制項隨視窗大小變化原理及實現
本文主要針對mfc的dialog,實現控制項隨視窗大小變化。原理 首先獲取dialog的初始大小,當視窗傳送變動時,呼叫onsize事件和方法,計算縮放比例,然後對介面中的所有控制項進行縮放和布局。實現 建立乙個cmfcdemodlg的dialog對話方塊 cmfcdemodlg 對話方塊 clas...
EASY SIZE 控制項隨視窗變化自由調整大小
1.設定對話方塊屬性 styles broder resizing 2.新增 include easysize.h 3.在對話方塊類定義的最前面新增 declare easysize 注意 沒有分號 4.在對話方塊的 oninitdialog 訊息函式中新增 oninitdialog 5.過載訊息 ...
控制項大小隨視窗變化的正確方法
一.在介紹這個方法之前先看下在網上見過一種方法 vc 之根據對話方塊大小調整控制項大小 1 在對話方塊類中加入成員變數crect m rect 用於儲存對話方塊大小變化前的大小 2 在對話方塊的oninitdialog 函式中獲取對話方塊建立時的大小 getclientrect m rect 3 在...