删除CToolBar浮动时的菜单--发布日期:2008-06-12 04:06

翻译 2008年10月02日 19:47:00
  你可以通过重写ON_WM_WINDOWPOSCHANGED消息处理函数来删除浮动状态下的工具栏实际是系统菜单。这个函数在CToolBar的大小,位置或者Z轴顺序改变时被调用。我们并没有处理WM_SIZE消息处理函数,因为这个函数仅仅只是在大小改变时被调用,而每次当工具栏浮动时并没有被调用。

       我们可以通过CControlBar类的成员m_pDockBar成员而不是通过直接调用GetParent()来得到工具栏的父窗口。从CToolBar派生一个类,我暂且称之为CToolBarEx,当然你可以选择一个你认为适合的名字。我们仅仅是在工具栏浮动是删除实际是系统菜单,所以检查工具栏是否是正在浮动状态,并确保m_pDockBar是一个合法的指针。

       在你的新类中添加如下成员变量: BOOL m_bMenuRemoved;

       当我们删除系统菜单时将其设置为TRUE,确保仅仅在需要是删除系统菜单。
我们需要得到一个m_pDockBar指针来检查工具栏是否确实是在一个CDockFrameWnd类中,以便可以安全地删除CToolBar的系统菜单。下面是示例代码:

#include <afxpriv.h>

void CXToolBar::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-&gt;GetParent();

             if( pParent->IsKindOf(

                           RUNTIME_CLASS(CMiniFrameWnd)))

             {

                 pParent->ModifyStyle( WS_SYSMENU, 0, 0 );

                 m_bMenuRemoved = TRUE;

             }

         }

     }

     else if( m_bMenuRemoved ) {

         m_bMenuRemoved = FALSE;

     }

}
原文网址:www.codejock.com/support/articles/mfc/general/g_8.asp

浮动状态栏 FloatControlBar()

浮动状态栏 FloatControlBar( &m_wndToolBar, pt): CToolBar    m_wndToolBar;m_wndToolBar.CreateEx(this, TBST...
  • tmljs1988
  • tmljs1988
  • 2011年03月03日 09:24
  • 2497

CToolBar的使用总结(转)

(一)工具条控制的主要功能 所谓工具条就是具有位图和分隔符组成的一组命令按钮,位图按钮部分可以是下推按钮、检查盒按钮、无线按 钮等。工具条对象类派生于主窗口架框类CframeWnd或CMDIFrame...
  • code09
  • code09
  • 2009年03月30日 13:54
  • 11312

如何在对话框中创建工具栏CToolBar

1、定义一个CToolBar m_wndtoolbar 2、插入工具栏资源  3、BOOL CEllispseDialogDlg::OnInitDialog() { CDialog::OnInitDi...
  • jangdong
  • jangdong
  • 2013年10月21日 12:33
  • 912

VC/MFC 工具栏设计-CToolBar使用

工具栏中包含了一组用于执行命令的按钮,每个按钮都用一个图标来表示。当单击某个按钮时,会产生一个相应的消息,对这个消息的处理就是按钮的功能实现。将菜单中常用的功能放置在工具栏中,这样可以方便用户操作,省...
  • qq_28337005
  • qq_28337005
  • 2016年06月17日 17:16
  • 1787

【Android动画九章】-浮动菜单

上几节讨论了各种各样的属性动画,这里将这些知识组合起来,模拟如下图所示的浮动菜单功能。 1.activity_main.xml: ...
  • yayun0516
  • yayun0516
  • 2016年05月15日 18:12
  • 1859

MFC工具栏(CToolBar)控件常见操作

工具栏 工具栏控件在控件面板里没有对应的选项(图标),但有一个工具栏控件类CToolBar,所以我们如果要创建一个工具栏控件并显示在窗口里的话,只能用代码来完成,事实上任何一种控件,都可以用代码创建...
  • zcx515545
  • zcx515545
  • 2014年04月26日 17:12
  • 1882

Android 浮动菜单效果控件

Android 浮动菜单效果
  • ITRenj
  • ITRenj
  • 2017年06月14日 14:33
  • 637

android中浮动菜单的基本实现

实现浮动菜单的方法很多,这里就简单介绍介绍几种比较常见的方法吧 用PopupMenu实现浮动菜单这种方式比较简单,直接上代码了: 在的java代码中实现构造浮动菜单 这里的getResources(...
  • Reoger
  • Reoger
  • 2016年05月18日 18:17
  • 742

RIL_REQUEST_SET_UICC_SUBSCRIPTION 在Qcom平台的流程

RIL_REQUEST_SET_UICC_SUBSCRIPTION在Qcom platform里的流程
  • wbo4958
  • wbo4958
  • 2015年09月13日 11:41
  • 586

Jquery plugin制作:浮动树菜单

(function($){ var defaults ={ x: 0,  //元素右下角x的偏移量 y: -300,//元素右下角y的偏移量 width:150, height:'auto', co...
  • czp11210
  • czp11210
  • 2016年09月20日 09:22
  • 452
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:删除CToolBar浮动时的菜单--发布日期:2008-06-12 04:06
举报原因:
原因补充:

(最多只允许输入30个字)