MFC窗體大小變化

2022-07-17 18:54:16 字數 700 閱讀 8054

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

首先明確的是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就是當前對話方塊的長和寬

}任務完成!

如何讓窗體大小隨著控制項的大小變化而變化

2014 01 20 14 25 form的autosize true,formborderstyle fixedsingle tablelayoutpanel及其裡面的容器的dock fill,autosize true label中的文字比較貼著窗體邊緣時可以通過padding屬性來調整 因定寬...

如何讓控制項隨窗體的大小變化而變化

根據 窗體的新的大小調整控制項 的 大小 新的x 新的y 控制項 private void setcontrols float newx,float newy,control cons 獲取控制項的tag屬性值,並分割後儲存字串陣列 float a convert.tosingle mytag 0 ...

隨著窗體大小變化改變控制項的大小和字型

public struct formsizechange float mfn float form.size.height formsizechange.currentsize.height 放大率 width convert.toint32 float form.size.width formsi...