MFC工具栏的使用
2015-12-05 16:26
260 查看
1、工具栏的作用
工具栏是Windows应用程序中一个非常重要的图形界面元素,它提供了一组顺序排列的带有位图图像的按钮。有一个较为明显的好处就是在有比较多按钮的情况下,使用工具栏可以更加方便的组织和管理资源。PhotoShop的主界面上就可以很明显的看到这一点。图中标注箭头的使用的都是工具栏实现的。
2、创建工具栏
MSDN中可以看到工具栏继承自CControlBar,工具栏的创建MSDN中给出了两种创建方式:
第一种方式:
1、创建一个toolbar资源
2、创建一个CTooBar类的对象
3、调用Create或者CreateEx函数来创建实例
4、调用LoadToolBar函数来对资源进行加载
示例:
if (!m_wndMyToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) || !m_wndMyToolBar.LoadToolBar(IDR_MYTOOLBAR)) { TRACE0("Failed to create toolbar\n"); return -1; // fail to create } m_wndMyToolBar.EnableDocking(CBRS_ALIGN_ANY); //指定工具栏可以停靠 EnableDocking(CBRS_ALIGN_ANY); //指定frame框架可以被停靠 DockControlBar(&m_wndMyToolBar); //停靠工具栏
第二种方式:
1、创建一个CTooBar类的对象
2、调用Create或者CreateEx函数来创建实例
3、调用LoadBitMap函数来导入位图,该位图作为构建toolbar的按钮图标
4、调用SetButtons函数来设置按钮的风格并且为每一个按钮添加一个位图相关联
两个创建函数
BOOL Create( CWnd* pParentWnd, DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_TOP, UINT nID = AFX_IDW_TOOLBAR );
BOOL CreateEx(CWnd* pParentWnd, DWORD dwCtrlStyle = TBSTYLE_FLAT, DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP, CRect rcBorders = CRect(0, 0, 0, 0), UINT nID = AFX_IDW_TOOLBAR);
相比Create函数,CreateEx函数多加了一个参数dwCtrlStyle用来指定扁平风格和一个rcBorders的参数来指定边框的厚度。
工具栏和控制栏的风格列表如下:
3、使用位图作为工具栏图标
也就是第二种方式下讲到的那样,不是用VC中绘制的工具栏,而是使用自己导入的位图来作为工具栏。if (!m_ToolBar.CreateEx(this,TBSTYLE_FLAT,WS_CHILD|WS_VISIBLE|CBRS_TOP |CBRS_GRIPPER|CBRS_TOOLTIPS|CBRS_FLYBY|CBRS_SIZE_DYNAMIC) ) { return -1; } m_bitmap.LoadBitmap(IDB_BITMAP5); //加载位位图 m_ToolBar.SetBitmap(m_bitmap); //向工具栏中设置位图 UINT nIDs[] = //ID列表 { ID_BTN_A,ID_BTN_B,ID_BTN_C, }; m_ToolBar.SetButtons(nIDs, 3); //向按钮中设置位图图像
后面的步骤就和之前是一样的了,这里加载的就成了24bit真彩的图片了。
相关文章推荐
- 系统基础优化
- Fresco 多图加载之ResizeOptions
- Java的Spring框架中bean的继承与内部bean的注入
- 模板元编程第六章课后习题(非答案)20151206
- Code Forces 590 A. Median Smoothing(机智)
- 数据库零散知识点
- Apache Lucene 5.x 集成中文分词库 IKAnalyzer
- BZOJ1052: [HAOI2007]覆盖问题
- iOS中的数据库 sqlite与coreData 的一些特点
- Cocos2d-Js使用JavaScript的优点
- centos下问题:connect:network is unreachable
- 修改了一下 感觉比上一次好
- 《疯狂JAVA讲义》——Singleton类
- 数据库,求属性集闭包和函数依赖集闭包的算法实现
- 类和对象(代码)
- 正则表达式在iOS中的运用
- Java对象创建之new关键字和newinstance()方法
- js jquery 设置select值
- freemarker定义自己的标签错误(一)
- C#,js取两位小数