我們經常會發現當我們將視窗最大化時,裡面的控制項並沒有進行改變,接下來我就介紹一下此問題的解決辦法,我們其實一般的都會把視窗的最大化按鈕失效,是視窗不能進行最大化操作,但是有時候我們還是需要對視窗進行最大化操作的,下面我們可以通過新增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訊息,並按照視窗大小比例來調整控制項的位置和大小,控制項的大小最好設定成視窗的百分之幾,這樣的話,就可以根據視窗的大小隨時調整了。...