如何讓對話方塊中的控制項隨著對話方塊大小的改變而隨之改變

2021-06-20 22:49:18 字數 962 閱讀 4373

今天做乙個介面專案的時候,需要讓對話方塊開始時就最大化,但是介面上的控制項,並不會隨著對話方塊的最大化

而變大,需要我們在**中設定,網上找到的方法如下:

1.首先為對話方塊類增加成員變數 話框rect,利用新舊兩個rect 的比例,來計算得到各控制項位置,具體**如下:

pwnd = getdlgitem(idc_list);     //獲取控制項控制代碼

if(pwnd)//判斷是否為空,因為對話方塊建立時會呼叫此函式,而當時控制項還未建立

getclientrect(&m_rect);//將變化後的對話方塊大小設為舊大小。

這段**還會有些問題,當最小化後,再恢復一定大小的時候,會導致m_rect為乙個值全為0 的矩陣,之後再進去

onsize函式的時候,會出現除數為0的情況出現。

所以我們最好的是儲存每個子控制項以及對話方塊的初始rect,然後每次放縮的大小都與初始大小的rect進行比較.

具體方法如下:

1.為每個子控制項都定義乙個用於儲存其初始rect的變數(例如m_rect_btn1,就是為idc_button1的控制項定義的rect)

2.給dialog定義兩個成員函式void getdlgrect(uint,crect&);   void resize(uint,crect&);

其中,getdlgrect函式的意義是獲取,某個控制項的rect,**如下:

void  csicountdlg::getdlgrect(uint ctrlid,crect& ctrlrect)

resize函式的意義是,由對話方塊的初始rect與當前rect來計算,每個子控制項的rect,並呼叫movewindow來顯示:

void csicountdlg::resize(uint ctrlid,crect& ctrlrect)

}這個方法的麻煩之處,在於當子控制項很多的時候,需要定義非常多的m_rect_xx變數,並且需要乙個個的來儲存並且計算其子控制項的大小。頗為不便,

以後改進。

對話方塊中顯示對話方塊

一 對話方塊中顯示對話方塊的方法 1 首先建立要在對話方塊裡顯示的那個對話方塊,命名為 idd inner 設定這個對話方塊的屬性 1 style 選擇 child 中文版 樣式 選擇 下層 2 border 為 none 中文版 邊框 選擇 無 2 為了顯示時能夠準確定位,我們可以在右邊要顯示對話...

對話方塊控制項

單選對話方塊 newalertdialog.builder this settitle 請做出你的選擇 seticon r.mipmap.ic launcher setpositivebutton 確認 null setnegativebutton 取消 null setsinglechoiceit...

對話方塊 訊息對話方塊

我們在使用windows系統的過程中經常會見到訊息對話方塊,提示我們有異常發生或提出詢問等。因為在軟體開發中經常用到訊息對話方塊,所以mfc提供了兩個函式可以直接生成指定風格的訊息對話方塊,而不需要我們在每次使用的時候都要去建立對話方塊資源和生成對話方塊類等。這兩個函式就是cwnd類的成員函式mes...