MFC如何使控制項大小隨著對話方塊大小自動調整

2022-08-26 10:45:12 字數 826 閱讀 5779

對話方塊的大小變化後,假若對話方塊上的控制項大小不變化,看起來會比較難看。下面就介紹怎麼讓對話方塊上的控制項隨著對話方塊的大小的變化自動調整。

首先明確的是windows有乙個wm_size訊息響應函式,這個函式在對話方塊大小發生變化的時候呼叫,所以我們可以記錄下原來對話方塊的大小,還有當前對話方塊的大小(這個不用自己算,系統已給出),然後根據控制項做出相應比例的調整。

比如原來對話方塊大小為a,現在為b,原來控制項大小為c,那麼現在的控制項大小應該為c*b/a;(注意a不能為0)

看例項:(黑體字為新增的**!!)

假設對話方塊類為cmydlg類,那麼首先設定乙個變數

crect m_rect; //用於儲存原對話方塊大小

那麼在對話方塊建立的時候先獲得對話方塊的大小

bool cmydlg::oninitdialog()

然後再手動新增乙個函式,用以實現具體的變化

void cmydlg::changesize(uint nid, int x, int y) //nid為控制項id,x,y分別為對話方塊的當前長和寬

}最後新增windows訊息響應函式onsize:

void cmydlg::onsize(uint ntype, int cx, int cy) //cx,cy就是當前對話方塊的長和寬

}任務完成!

MFC如何使控制項大小隨著對話方塊大小自動調整

假設對話方塊類為cmydlg類,那麼首先設定乙個變數 crect m rect 用於儲存原對話方塊大小 那麼在對話方塊建立的時候先獲得對話方塊的大小 bool cmydlg oninitdialog 然後再手動新增乙個函式,用以實現具體的變化 void cmydlg changesize uint ...

MFC如何使控制項大小隨著對話方塊大小自動調整

首先明確的是windows有乙個 wm size 訊息響應函式,這個函式在對話方塊大小發生變化的時候呼叫,所以我們可以記錄下原來對話方塊的大小,還有當前對話方塊的大小 這個不用自己算,系統已給出 然後根據控制項做出相應比例的調整。比如原來對話方塊大小為a,現在為 b,原來控制項大小為 c,那麼現在的...

MFC對話方塊內控制項大小隨著對話方塊大小變化

1 首先要知道對話方塊大小是否改變,改變了多少,我們應該記錄當前對話方塊的大小。在對話方塊類中新增成員變數 crect m rect 他是用來記錄當前對話方塊的大小。我們在oninitdialog 函式中獲取對話方塊建立時的大小 getclientrect m rect 2 增加訊息wm size的...