動態改變對話方塊可調整大小屬性

2021-07-07 04:35:56 字數 1109 閱讀 3231

mfc的對話方塊cdialog是怎麼控制視窗可調整大小的屬性的呢?開啟資源檔案,對話方塊資源的屬性列表中,有乙個「border」項,改變該項的值就可以改變視窗邊框風格。實際上windows視窗是否可調整大小,就是根據邊框的風格來確定的。視窗風格中與邊框有關的值如下:

ws_border- 

thin-line border,不能調整大小;

ws_dlgframe

-dialog box typical border,不能調整大小;

ws_sizebox

-sizing border,可以調整大小;

ws_thickframe

同ws_sizebox。

我們可以通過createwindow函式的

dwstyle引數值來

指定視窗風格,但是如果想在執行期動態改變視窗邊框風格呢?可以用modifystyle函式,通過簡單的新增和刪除上面的視窗風格,就能實現視窗可調整大小屬性的改變。

但是如果你將「systemmenu」屬性設定為「true」,就會發現即使呼叫modifystyle(ws_border,ws_thickframe, swp_framechanged);將邊框修改為thickframe也不能調整大小,出現了箭頭,但是視窗大小是固定的,原因是必須要將「maximize box」設定為「true」。

當然,也可以用** modifystyle(null, ws_sysmenu |ws_maximizebox); 來新增系統選單和最大化按鈕。

當我們需要固定對話方塊尺寸時,有3個地方需要控制:1,邊框不能拉伸視窗;2,最大化按鈕不可用;3,禁止雙擊標題欄最大化。指定邊框風格為ws_border可完成1和3,去掉ws_maximizebox可完成2。mfc已經為我們封裝的很好。

自己測試要如下設定才能調整大小。

//設定邊框ws_thickframe 可拉伸模式

modifystyle(ws_border, ws_thickframe, swp_framechanged);

//關閉選單功能。(關閉選單功能才能縮放)

modifystyle(ws_sysmenu, 0);

動態改變對話方塊可調整大小屬性 「Border」項

mfc的對話方塊cdialog是怎麼控制視窗可調整大小的屬性的呢?開啟資源檔案,對話方塊資源的屬性列表中,有乙個 border 項,改變該項的值就可以改變視窗邊框風格。實際上windows視窗是否可調整大小,就是根據邊框的風格來確定的。視窗風格中與邊框有關的值如下 ws border thin li...

可調整大小的組合框

e 69.21 kb 介紹 當我用combobox建立乙個使用datagrid的專案時,我希望獲得乙個可調整大小的combobox,將其高度設定為datagrid單元格的高度。這是我建立乙個可調整大小的組合框activex的嘗試,現在我可以改變它的高度。一些程式設計師使用表單,列表框,文字框和按鈕來...

動態改變對話方塊大小

首先,需要在改變大小的對話方塊中新增一條分隔條,分隔條是用影象控制項製作的picture control,分隔條的位置就是對話方塊變小時所在的位置。修改分隔條id為 idc separator,選擇sunken屬性,意思是下陷。然後在需要修改的地方加入以下 static crect rectlarg...