MFC控制項跟隨對話方塊自適應大小

2021-08-22 08:29:47 字數 858 閱讀 6874

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

首先明確的是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對話方塊內控制項大小隨著對話方塊大小變化

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

MFC對話方塊控制項 Edit Control

edit視窗是用來接收使用者輸入最常用的乙個控制項。建立乙個輸入視窗可以使用成員函式 bool cedit create lpctstr lpsztext,dword dwstyle,const rect rect,cwnd pparentwnd,uint nid 0xffff 其中dwstyle將...

MFC對話方塊自適應導致下拉框無法下拉問題的解決

最近需要把乙個mfc對話方塊程式嵌進qt介面中,mfc對話方塊中有許多下拉框控制項。當qt介面大小發生變化時,mfc介面也會相應的作自適應。但結果就是,下拉框全部拉不下來。造成這個現象的原因就是,在寫自適應的時候我們改變了下拉框的高度,實際上是不能改變的。網上也沒有可靠的解決方法。我的做法就是,遍歷...