MFC小知識一:將對話框設置為無邊框無標題欄初始最大化樣式
阿新 • • 發佈:2017-06-10
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, 0View Code, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | SWP_FRAMECHANGED); 7 //最大化窗口 8 ShowWindow(SW_MAXIMIZE);
第二種:
1 //獲取舊樣式 2 DWORD dwStyle = GetStyle(); 3 DWORD dwNewStyle = WS_OVERLAPPED | WS_VISIBLE| WS_SYSMENU |WS_MINIMIZEBOX|WS_MAXIMIZEBOX|WS_CLIPCHILDREN|WS_CLIPSIBLINGS; 4 //按位與將舊樣式去掉View Code5 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);
目前看來,兩種方式都沒有什麽其他後遺癥,那麽就簡潔看來自然是第一種比較好。
參考博客:
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小知識一:將對話框設置為無邊框無標題欄初始最大化樣式