MFC小知识一:将对话框设置为无边框无标题栏初始最大化样式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC小知识一:将对话框设置为无边框无标题栏初始最大化样式相关的知识,希望对你有一定的参考价值。

     今天公司新开始的一个项目。界面模式为无边框无标题栏初始最大化样式。其实本来可以直接在属性里面将默认的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小知识一:将对话框设置为无边框无标题栏初始最大化样式的主要内容,如果未能解决你的问题,请参考以下文章

MFC窗口边框问题

猎豹MFC--拖动无边框窗体

无边框的表格行(包括最左边和最右边)

mfc dialog中能嵌入另外一个dialog吗

使用纯 Windows API 设置 StaticText 控件文本,无 MFC

删除 Windows 窗体中的标题栏