在乙個基於mfc的dialog上布置許多控制項的時候,有時候在改變dialog大小的時候控制項不隨著改變,現在告訴大家怎麼讓dialog所有控制項隨dialog改變而改變。
現在已最簡單新建的對話方塊,在新建的dialog裡面的「確定」和「取消」按鈕,在對話方塊最大化得時候,不會一起變大的,而是保持原來的大小。現在我們
讓他隨dialog最大化改變而改變。
實現原理:對話方塊也是視窗,最大化是對視窗大小的改變,而在windows message handle中有個wm_size的訊息,該訊息在視窗大小發生變化的時候會產生。
那麼我們可以根據這個訊息,在視窗大小發生變化的時候,利用movewindow()函式來重新設定各個控制項的大小。
現在看上面最簡單的情況的實現**:
1 首先要知道對話方塊大小是否改變,改變了多少,我們應該記錄當前對話方塊的大小。
在對話方塊類中新增全域性成員變數crect m_rect他是用來記錄當前對話方塊的大小。我們在oninitdialog()函式中獲取對話方塊建立時的大小:getclientrect(&m_rect);
2 增加訊息wm_size的訊息響應函式 onsize():只要對話方塊大小發生變化,就會呼叫該函式(onsize函式可以通過嚮導新增)。
3 在onsize()函式中增加如下**:
void cmonsterdlg::onsize(uint ntype, int cx, int cy)
}getclientrect(&m_rect);// 將變化後的對話方塊大小設為舊大小
}然後執行你原來的程式,當對話方塊最大化的時候,兩個按鈕也變大了。
mfc 控制項大小隨窗體改變而改變
控制項是從cwnd派生的,但不能使用setwindowpos 或onsize 或onsizing 來改變其大小,應在父視窗的wm size訊息中使用movewindow 來進行調整。vc 之根據對話方塊大小調整控制項大小 1 在對話方塊類中加入成員變數crect m rect 用於儲存對話方塊大小變...
MFC控制項大小隨窗體改變而改變大小
pragma once 程式說明 用於mfc程式控制元件隨著視窗大小改變而改變 標頭檔案 itemresize.h cpp檔案 itemresize.cpp 用法說明 1.在對話方塊標頭檔案中新增此類的物件 citemresize m itemsize 2.在視窗初始化函式 oninitdialog...
窗體控制項隨窗體大小改變 包括字型大小
是一篇vb編寫的,我只是把它翻譯成c 的.其實anchor和dock屬性也可以實現,但好象只對容器效果理想,而且字型大小也沒有變化.最近論壇上有好多這樣的貼子,具體實現 如下 private void settag control cons private void setcontrols floa...