1. 程式人生 > >MFC小知識一:將對話框設置為無邊框無標題欄初始最大化樣式

MFC小知識一:將對話框設置為無邊框無標題欄初始最大化樣式

nts fec 按位與 tails blog 不變 無標題 設置 http

今天公司新開始的一個項目。界面模式為無邊框無標題欄初始最大化樣式。其實本來可以直接在屬性裏面將默認的Resizing換成none就可以了,那麽我想如何用代碼來實現呢?於是就百度了一下。找到了兩種方式,但其實兩種方式思想是一樣的。即修改樣式——ModifyStyle。直接將以下代碼加在OnInitDialog()即可實現。

第一種:

技術分享
1 // 去掉標題欄  
2 ModifyStyle(WS_CAPTION, 0); 
3  // 去掉邊框
4 ModifyStyleEx(WS_EX_DLGMODALFRAME, 0);  
5 //窗口位置和大小保持原來不變
6 SetWindowPos(NULL, 0
, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | SWP_FRAMECHANGED); 7 //最大化窗口 8 ShowWindow(SW_MAXIMIZE);
View Code

第二種:

技術分享
 1 //獲取舊樣式
 2 DWORD dwStyle = GetStyle();
 3 DWORD dwNewStyle = WS_OVERLAPPED | WS_VISIBLE| WS_SYSMENU |WS_MINIMIZEBOX|WS_MAXIMIZEBOX|WS_CLIPCHILDREN|WS_CLIPSIBLINGS;
 4 //按位與將舊樣式去掉
5 dwNewStyle&=dwStyle; 6 //設置成新的樣式 7 SetWindowLong(m_hWnd,GWL_STYLE,dwNewStyle); 8 //獲取舊擴展樣式 9 DWORD dwExStyle = GetExStyle(); 10 DWORD dwNewExStyle = WS_EX_LEFT |WS_EX_LTRREADING |WS_EX_RIGHTSCROLLBAR; 11 //按位與將舊擴展樣式去掉 12 dwNewExStyle&=dwExStyle; 13 //設置新的擴展樣式 14 SetWindowLong(m_hWnd,GWL_EXSTYLE,dwNewExStyle);
15 //窗口位置和大小保持原來不變 16 SetWindowPos(NULL,0,0,0,0,SWP_NOZORDER|SWP_NOMOVE|SWP_NOSIZE|SWP_FRAMECHANGED); 17 //最大化窗口 18 ShowWindow(SW_MAXIMIZE);
View Code

目前看來,兩種方式都沒有什麽其他後遺癥,那麽就簡潔看來自然是第一種比較好。

參考博客:

http://blog.csdn.net/hurryboylqs/article/details/5525597#comments

http://blog.csdn.net/CKRGD/article/details/48372913

http://blog.csdn.net/visualeleven/article/details/19543391

MFC小知識一:將對話框設置為無邊框無標題欄初始最大化樣式