對話方塊控制項大小隨視窗的大小變化而變化

2021-07-04 15:36:07 字數 781 閱讀 7164

我們經常會發現當我們將視窗最大化時,裡面的控制項並沒有進行改變,接下來我就介紹一下此問題的解決辦法,我們其實一般的都會把視窗的最大化按鈕失效,是視窗不能進行最大化操作,但是有時候我們還是需要對視窗進行最大化操作的,下面我們可以通過新增wm_size訊息來解決此問題。

1 在xxdlg.h中新增

afx_msg void onsize(uint ntype, int cx, int cy);

2 在xxdlg.h中新增

on_wm_size() 或者 on_message(wm_size,onsize)

3 在xxdlg類中新增以下成員變數

point osize

4 在xxdlg類中oninitdialog()新增以下**

crect rect;  

getclientrect(&rect); //獲取客戶端區域的大小

osize.x = rect.right - rect.left

; //初始視窗的寬度

osize.y = rect.bottom - rect.top

; //初始視窗的高度

5在xxdlg類中新增以下成員函式
「`

void xxdlg::onsize(uint ntype, int cx, int cy)

osize = newdialogsize; //新的視窗大小作為下一次變化的依據

}但是,經過多次的視窗變化後,裡面的控制項會失真,這個問題還未解決!

MFC中控制項大小隨對話方塊大小動態變化

首先在 dlg.h標頭檔案中定義 cpp view plain copy print?crect m rectmin 用於儲存初始化對話方塊的大小 crect button1rectinit 用於儲存初始化控制項的大小 crect m rectmin 用於儲存初始化對話方塊的大小 crect but...

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

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

如何實現控制項隨對話方塊大小變化而自動調整大小和位置

1.處理對話方塊的wm size,然後用movewindow或者setwindowpos來把對話方塊上面的控制項重新調整新位置和大小。2.基本的做法就是響應wm size訊息,並按照視窗大小比例來調整控制項的位置和大小,控制項的大小最好設定成視窗的百分之幾,這樣的話,就可以根據視窗的大小隨時調整了。...