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


 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函數,通過簡單的添加和刪除上面的窗口風格,就能實現窗口可調整大小屬性的改變。

    但是如果你將“System Menu”屬性設置為“True”,就會發現即使調用ModifyStyle(WS_BORDER, WS_THICKFRAME, SWP_FRAMECHANGED);將邊框修改為thick frame也不能調整大小,出現了箭頭,但是窗口大小是固定的,原因是必須要將“Maximize Box”設置為“True”。

    當然,也可以用代碼ModifyStyle(NULL, WS_SYSMENU | WS_MAXIMIZEBOX);來添加系統菜單和最大化按鈕。

 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM