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

2024-04-14 18:58

本文主要是介绍删除CToolBar浮动时的菜单--发布日期:2008-06-12 04:06,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

你可以通过重写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

这篇关于删除CToolBar浮动时的菜单--发布日期:2008-06-12 04:06的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/903741

相关文章

mysql删除无用用户的方法实现

《mysql删除无用用户的方法实现》本文主要介绍了mysql删除无用用户的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 1、删除不用的账户(1) 查看当前已存在账户mysql> select user,host,pa

Nginx实现前端灰度发布

《Nginx实现前端灰度发布》灰度发布是一种重要的策略,它允许我们在不影响所有用户的情况下,逐步推出新功能或更新,通过灰度发布,我们可以测试新版本的稳定性和性能,下面就来介绍一下前端灰度发布的使用,感... 目录前言一、基于权重的流量分配二、基于 Cookie 的分流三、基于请求头的分流四、基于请求参数的分

MySQL 日期时间格式化函数 DATE_FORMAT() 的使用示例详解

《MySQL日期时间格式化函数DATE_FORMAT()的使用示例详解》`DATE_FORMAT()`是MySQL中用于格式化日期时间的函数,本文详细介绍了其语法、格式化字符串的含义以及常见日期... 目录一、DATE_FORMAT()语法二、格式化字符串详解三、常见日期时间格式组合四、业务场景五、总结一、

MySQL InnoDB引擎ibdata文件损坏/删除后使用frm和ibd文件恢复数据

《MySQLInnoDB引擎ibdata文件损坏/删除后使用frm和ibd文件恢复数据》mysql的ibdata文件被误删、被恶意修改,没有从库和备份数据的情况下的数据恢复,不能保证数据库所有表数据... 参考:mysql Innodb表空间卸载、迁移、装载的使用方法注意!此方法只适用于innodb_fi

shell脚本自动删除30天以前的文件(最新推荐)

《shell脚本自动删除30天以前的文件(最新推荐)》该文章介绍了如何使用Shell脚本自动删除指定目录下30天以前的文件,并通过crontab设置定时任务,此外,还提供了如何使用Shell脚本删除E... 目录shell脚本自动删除30天以前的文件linux按照日期定时删除elasticsearch索引s

定价129元!支持双频 Wi-Fi 5的华为AX1路由器发布

《定价129元!支持双频Wi-Fi5的华为AX1路由器发布》华为上周推出了其最新的入门级Wi-Fi5路由器——华为路由AX1,建议零售价129元,这款路由器配置如何?详细请看下文介... 华为 Wi-Fi 5 路由 AX1 已正式开售,新品支持双频 1200 兆、配有四个千兆网口、提供可视化智能诊断功能,建

docker如何删除悬空镜像

《docker如何删除悬空镜像》文章介绍了如何使用Docker命令删除悬空镜像,以提高服务器空间利用率,通过使用dockerimage命令结合filter和awk工具,可以过滤出没有Tag的镜像,并将... 目录docChina编程ker删除悬空镜像前言悬空镜像docker官方提供的方式自定义方式总结docker

springboot日期格式化全局LocalDateTime详解

《springboot日期格式化全局LocalDateTime详解》文章主要分析了SpringBoot中ObjectMapper对象的序列化和反序列化过程,并具体探讨了日期格式化问题,通过分析Spri... 目录分析ObjectMapper与jsonSerializer结论自定义日期格式(全局)扩展利用配置

使用Python在Excel中插入、修改、提取和删除超链接

《使用Python在Excel中插入、修改、提取和删除超链接》超链接是Excel中的常用功能,通过点击超链接可以快速跳转到外部网站、本地文件或工作表中的特定单元格,有效提升数据访问的效率和用户体验,这... 目录引言使用工具python在Excel中插入超链接Python修改Excel中的超链接Python

Android kotlin语言实现删除文件的解决方案

《Androidkotlin语言实现删除文件的解决方案》:本文主要介绍Androidkotlin语言实现删除文件的解决方案,在项目开发过程中,尤其是需要跨平台协作的项目,那么删除用户指定的文件的... 目录一、前言二、适用环境三、模板内容1.权限申请2.Activity中的模板一、前言在项目开发过程中,尤