1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > MFC去掉窗口右上方最大化最小化关闭按钮

MFC去掉窗口右上方最大化最小化关闭按钮

时间:2019-12-25 04:42:41

相关推荐

MFC去掉窗口右上方最大化最小化关闭按钮

MFC去掉窗口右上方最大化最小化关闭按钮

简介:

最大化、最小化和关闭按钮是窗口中最主要的元素。首先要说明,说他们是按钮其实是不准确的,按钮是一种窗口,而这三个组件根本就不是窗口,而是一个窗口常见的组成部分。出于习惯的原因,这里还是称呼他们为按钮。

这三个按钮是否显示似乎只能在窗口创建是决定。首先,要显示这三个按钮,窗口必须有标题条和系统菜单,没有标题条和系统菜单的窗口是不能显示这三个按钮的,也就是说,要想有这三个按钮,创建窗口时必须有WS_CAPTION和WS_SYSMENU风格。当窗口创建时有风格WS_MAXIMIZEBOX时,窗口显示最大化按钮,当有风格WS_MINIMIZEBOX时,窗口显示最小化按钮,而只要有标题条并且有系统菜单,关闭按钮就必然会显示出来。

对这三个按钮的操作往往都是系统菜单来进行的,这也解释了为什么要显示这三个按钮必须有系统菜单。一般而言,当一个窗口有最大化按钮时,在系统菜单里也会有对应的菜单项,对这个菜单项的操作一般都能反馈到这各按钮中。其中,最大化按钮在系统菜单中的ID为SC_MAXIMIZE,最小化按钮为SC_MINIMIZE,而关闭按钮为SC_CLOSE。当窗口处于最大化状态时,系统菜单SC_MAXIMIZE则变会并被禁止,而此时最大化按钮变为恢复按钮,ID对应为系统菜单中的SC_RESTORE。

实现代码如下:

方法一:

.h文件中:

afx_msg BOOL PreCreateWindow(CREATESTRUCT& cs);

.cpp文件中:

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { cs.style = cs.style&~WS_MAXIMIZEBOX&~WS_SYSMENU&~WS_MINIMIZEBOX; if( !CFrameWnd::PreCreateWindow(cs) ) return FALSE; // TODO: Modify the Window class or styles here by modifying // the CREATESTRUCT cs return TRUE; }

cs.style中还有很多style可改,比如~WS_THICKFRAME就是禁止窗口大小的改变。

方法二:

在OnCreate函数中,添加如下代码:

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct){// 设置标题--标题显示为:无标题-众泰克科技//this->SetTitle("众泰克科技");// 隐藏最大化,最小化,关闭按钮ModifyStyle(WS_SYSMENU, 0);// 隐藏标题栏ModifyStyle(WS_CAPTION, 0);// 去掉菜单栏SetMenu(NULL);// 全屏显示RECT rc;::GetWindowRect(::GetDesktopWindow(), &rc); this->MoveWindow(&rc);}/*去掉标题栏:在OnCreate函数中,添加如下代码:ModifyStyle(WS_CAPTION, 0, SWP_FRAMECHANGED);单文档,多文档中都是如此子窗体为:CMDIChildWnd的子类。在多文档界面中,去掉菜单栏:在子窗体的OnMDIActivate函数中,添加如下行:AfxGetMainWnd()->SetMenu(NULL);父窗体的最大化显示:在子窗体的OnCreateClient函数中,添加如下行:RECT rc;::GetWindowRect(::GetDesktopWindow(), &rc); this->MoveWindow(&rc);子窗体的最大化显示:重写ActivateFrame函数,在行数中添加:nCmdShow = SW_SHOWMAXIMIZED; 关闭子窗体是去掉保存提示:在Doc类中,重写SaveModified函数,代码为:return TRUE;*/

希望对你有所帮助......

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。