今天公司新开始的一个项目。界面模式为无边框无标题栏初始最大化样式。其实本来可以直接在属性里面将默认的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);
第二种:
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);
目前看来,两种方式都没有什么其他后遗症,那么就简洁看来自然是第一种比较好。
参考博客:
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
时间: 2024-11-10 10:36:10