【MFC】定制浮动工具栏
00. 目录
文章目录
- 00. 目录
- 01. 案例概述
- 02. 开发环境
- 03. 关键技术
- 04. 程序设计
- 05. 秘笈心法
- 06. 源码下载
- 07. 附录
01. 案例概述
Microsoft Visual C++中对话框资源控件的窗体就是浮动的工具栏,在PhotoShop、Flash、AI等软件中也能看到浮动的工具栏窗体。本案例实现的就是一个浮动的工具栏窗体,效果如下图所示。
02. 开发环境
系统环境:Windows 10
开发环境:Visual Studio 2019
03. 关键技术
通过MFC向导生成的单文档或多文档应用程序,只要将工具拦向客户区拖动,就可以使工具栏浮动,本实例通过Create方法创建一个工具栏,然后通过FloatControlBar方法控制工具为浮动的工具栏。
CToolBar类的Create方法用于创建一个工具栏
BOOL Create( CWnd* pParentWnd, DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_TOP, UINT nID = AFX_IDW_TOOLBAR );
参数说明:upParentWnd:父窗体指针。dwStyle:窗体的样式,默认情况下取值是WS_CHILD,WS_VISIBLE,CBRS_TOP3个,还有如下取值:q CBRS_TOP:控制工具栏在顶部。q CBRS_BOTTOM:控制工具栏在底部。q CBRS_NOALIGN:控制工具栏不对齐。q CBRS_TOOLTIPS:工具栏具有提示条。q CBRS_SIZE_DYNAMIC:工具栏的大小可以改变。q CBRS_SIZE_FIXED:工具栏的大小固定。q CBRS_FLOATING:工具栏浮动。q CBRS_FLYBY:工具栏平坦样式。q CBRS_HIDE_INPLACE:工具栏不显示。nID:工具栏在工程中的资源ID,可以使用默认ID值AFX_IDW_TOOLBAR。
CFrameWnd类的FloatControlBar方法用于控制工具栏显示的位置及样式,语法如下:
CFrameWnd* FloatControlBar( CControlBar * pBar, CPoint point, DWORD dwStyle = CBRS_ALIGN_TOP );参数说明:upBar:控制栏指针。point:工具栏所在的控制栏左顶点的显示位置。dwStyle:工具栏显示样式。
04. 程序设计
(1)新建基于单文档视图MFC的应用程序。
(2)在函数OnCreate中将原有的工具栏设置成浮动工具栏:
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{if (CFrameWnd::OnCreate(lpCreateStruct) == -1)return -1;//创建工具栏//CBRS_FLOATING为浮动样式if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_FLOATING) ||!m_wndToolBar.LoadToolBar(IDR_MAINFRAME)){TRACE0("未能创建工具栏\n");return -1; // 未能创建}//创建状态栏if (!m_wndStatusBar.Create(this)){TRACE0("未能创建状态栏\n");return -1; // 未能创建}m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT));//取消工具栏的停靠方式m_wndToolBar.EnableDocking(0);EnableDocking(0);CRect rect;//获取窗体区域GetWindowRect(&rect);//计算工具栏显示的坐标CPoint point(rect.left + 100, rect.top + 100);//将工具栏浮动显示FloatControlBar(&m_wndToolBar, point, CBRS_ALIGN_LEFT);// TODO: 如果不需要可停靠工具栏,则删除这三行 必须注释这几行 否则达不到对应的效果//m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);//EnableDocking(CBRS_ALIGN_ANY);//DockControlBar(&m_wndToolBar);return 0;
}
05. 秘笈心法
工具栏的位置
MFC类库中对工具栏的位置进行了宏定义,通过MFC类库函数很容易控制工具栏的位置。用户在用鼠标拖动工具栏的过程中,可以根据鼠标的坐标在窗体区域中的位置来进行工具栏停靠位置的判断,进而实现窗体吸附效果。
06. 源码下载
下载:定制浮动工具栏.rar
07. 附录
【MFC】定制浮动工具栏相关推荐
- 【MFC】在工具栏中添加编辑框
00. 目录 文章目录 00. 目录 01. 案例概述 02. 开发环境 03. 关键技术 04. 程序设计 05. 秘笈心法 06. 源码下载 07. 附录 01. 案例概述 在工具栏中添加编辑框可 ...
- Perform 浮动工具栏 无标题窗口的移动
//浮动工具栏 { 窗体是否要隐藏,重要的是要判断是否在操作中, 通过窗体的Active属性,可以确定窗体是否具有焦点. 在窗体有焦点时,该窗体正在被操作, 这时需要完全显示在屏幕当中: 如果窗体没 ...
- Visual C# .Net 环境中编程实现浮动工具栏
Visual C# .Net 环境中编程实现浮动工具栏 郭胜涛 mailtogst@163.com 原帖地址:http://blog.csdn.net/mailtogst/archive/2007/0 ...
- Excel 2010 VBA 入门 130 利用窗体创建实时筛选浮动工具栏
目录 题 码 DefauIt和CanceI按钮 提高单元格隐藏的速度 自制浮动工具栏 动态显示与隐藏窗体 题 如图所示,该表为某单位员工档案.现希望制作一个包含有文本框的浮动工具栏,当在文本框中输入字 ...
- android5.1显示工具栏,讯飞输入法5.1.1805定制专属工具栏
[IT168 资讯]作为一款功能强大的手机输入工具,除了输入方式的革命性创新,讯飞输入法最引人的地方还在出众的用户体验.4月10日,讯飞输入法首家发布自定义工具栏功能,允许用户根据自身喜好任意调整工具 ...
- MFC菜单、工具栏和状态栏
菜单:CMenu类 CMenu类的主要成员函数BOOL LoadMenu(UINT nIDResource);加载菜单资源,并将其附加到CMenu对象上.参数nIDResource指定了要加载的菜单资 ...
- 解决一个MFC程序的工具栏背景为黑的问题
作者:朱金灿 来源:clever101的专栏 为什么大多数人学不会人工智能编程?>>> 问题现象描述 最近实现在一个MFC单文档程序上动态创建菜单栏和工具栏,代码如下: stat ...
- mfc 两个工具栏合并_(海外观点)MFC,微型电商仓的新玩法?
Micro-fulfillment may be coming to a grocerystore near you. See how it works. 微型订单履约可能会来到你附近的一家杂货店.了 ...
- MFC CMFCToolBar静态工具栏和动态工具栏,加载自定义图片(真彩透明)
现在把我最新研究的对CMFCToolBar心得写在这边. 现在介绍两种加载工具栏的方式: 一种是静态加载工具栏,跟普通的加载工具栏一样,只是用了自定义图片. 一种是动态加载工具栏,这个也是需要静态工具 ...
最新文章
- poj2718 Smallest Difference
- iis服务器怎样配置多张证书,IIS配置多个ssl怎么做?怎么配置?
- js删除数组中的某一个元素
- 学生用计算机中sto,STO 文件扩展名: 它是什么以及如何打开它?
- dp按照规模分类总结
- ArrayList理解(1)初始化
- 团队作业(二):项目选题
- 网上找的视频素材有水印怎么办?教你一键打码
- app下载 微信扫码打开 提示用户用浏览器打开
- 美团、点评app抓包及参数分析
- linux查看目录是不是btrfs,Linux 文件系统Btrfs 的Kconfig分析
- cad面积计算机,用cad计算多个面积的方法步骤
- 数说故事全新官网2.0正式上线,全新视觉焕新升级
- 不要再拿“学历不重要”的谎言,骗正在“入海”的95后
- 自己实现notifyDatasetChanged
- BUUCTF:zip
- 时间复杂度以及空间复杂度(大O的渐进表示法)
- 安利 3 个 pandas 数据探索分析神器!
- 利用指针及数组对国家名称按字典排序
- 【Matlab系列】之基于元胞自动机的城市规划(程序修正)
热门文章
- RDIFramework.NET ━ 9.3 用户管理 ━ Web部分
- 第四章--调试器及相关工具入门
- JUnit3 结合一个除法的单元测试说明Assert.fail()的用法
- 我的.net程序在linux上运行起啦
- 10-19 查询学生成绩及汇总其总学分 (10 分)
- flutter显示图标_如何让 Flutter 应用更好地使用 SVG?
- 每日程序C语言49-猴子分桃子问题
- C语言学习之求∑n!(即求1!+2!+3!+...+20!)
- android 开发常见问题,Android 开发常见问题汇总
- java理念_java温故而知新(9)OOP(面向对象编程)理念