【MFC】定制浮动工具栏
生活随笔
收集整理的这篇文章主要介绍了
【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】带背景的工具栏
- 下一篇: 【MFC】对话框中创建工具栏