如何去掉浮动工具条中的“关闭”按钮

安宁5014

安宁5014

2016-01-29 12:04

如何去掉浮动工具条中的“关闭”按钮,如何去掉浮动工具条中的“关闭”按钮

如何去掉浮动工具条中的“关闭”按钮


作者/NorthTibet

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/cyuyanjiaocheng/)

下载源代码

    在C++/MFC框架应用程序里,当浮动工具条被拖离主窗口后,一般都有一个“关闭”按钮,如图一所示:


图一 

    本来这个按钮完全是按照Windows应用程序的UI设计规范而设计的,也就是说所有的窗口都应该有一个地方让用户可以关闭这个窗口。但是有的用户提出来不想要这个“关闭”按钮。既然用户有这种需要,那么我们就想办法实现吧......
    首先,我们来确定实现的思路,因为我们要实现的功能与工具条有关,所以涉及的类肯定与 CToolBar有关。其次,为了判断工具条浮动后“关闭”按钮的状态,我们需要一个表示状态的成员变量;第三,实现工具条的浮动特性,需要对工具条窗口的ON_WM_WINDOWPOSCHANGED消息进行处理。这个消息负责CToolBar窗口大小、位置或Z坐标的变化,这里为什么不用WM_SIZE/OnSize来处理窗口大小的改变呢?因为仅当涉及窗口大小改变而不涉及窗口位置也改变时才这样调用,所以当浮动工具条时不一定每次都调用处理WM_SIZE/OnSize。我们可以利用 CControlBar 基类的m_pDockBar成员来调用GetParent()以获取工具条的父窗口。从而改变父窗口的式样——屏蔽系统菜单——来达到我们的目的——去掉“关闭”按钮。
    有了思路,下面来看看具体的实现代码,我们先从CToolBar派生一个新类CToolBarEx,因为我们的目的是在浮动工具条时去掉“关闭”按钮,所以仅仅判断工具条是否浮动就可以了,这一点用CControlBar类的属性判断函数可以做到:

BOOL IsFloating() const;      
在新类中添加一个成员变量,用它表示“关闭”按钮的状态:
BOOL m_bMenuRemoved;
当我们去掉主框架的系统菜单属性时,它的值为TRUE。
接着,我们需要一个m_pDockBar成员父窗口的指针,以便检查它是否确实为CDockFrameWnd,此时我们用到了 m_pDockBar,用它来判断父窗口类型,注意保证它是一个有效指针。这样我们就可以放心地从CToolBar中去掉系统菜单。下面是处理ON_WM_WINDOWPOSCHANGED消息的代码:
void CToolBarEx::OnWindowPosChanged(WINDOWPOS FAR* lpwndpos) {CToolBar::OnWindowPosChanged(lpwndpos);// should only be called once, when floated.if( IsFloating() ){if( m_pDockBar && !m_bMenuRemoved ){CWnd* pParent = m_pDockBar-GetParent();if( pParent-IsKindOf(RUNTIME_CLASS(CMiniFrameWnd))){pParent-ModifyStyle( WS_SYSMENU, 0, 0 );m_bMenuRemoved = TRUE;}}}else if( m_bMenuRemoved ) {m_bMenuRemoved = FALSE;}}      
下图是最终的运行结果图:


图二
展开更多 50%)
分享

猜你喜欢

如何去掉浮动工具条中的“关闭”按钮

C语言教程 C语言函数
如何去掉浮动工具条中的“关闭”按钮

VC++删除浮动工具条中“关闭”按钮

编程语言 网络编程
VC++删除浮动工具条中“关闭”按钮

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

如何定制浮动工具条

C语言教程 C语言函数
如何定制浮动工具条

Javascript制作浮动的工具条

电脑网络
Javascript制作浮动的工具条

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

怎样关闭Word2024中的浮动工具栏

word
怎样关闭Word2024中的浮动工具栏

javascript制作浮动的工具条

电脑网络
javascript制作浮动的工具条

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

《战国无双 编年史3》刷武器等级关卡解析及推荐

《战国无双 编年史3》刷武器等级关卡解析及推荐

PSV《高达破坏者2》新人初期配置推荐解析

PSV《高达破坏者2》新人初期配置推荐解析
下拉加载更多内容 ↓