动态创建CMFCToolbar并添加按钮
来源:互联网 发布:mac下载office办公软件 编辑:程序博客网 时间:2024/05/22 14:16
最近遇到一个问题,需要动态的从xml文件读取一系列图标文件,加载到一个toolbar中,由于使用的是vs2008 with sp1 feature pack,自然想到用CMFCToolbar来做,思路也很简单
1、将图标文件加入CMFCToolBarImages。
2、设置CMFCToolbar::SetUserImages为第1步中的CMFCToolBarImages。
3、继承CMFCToolbar,在OnCreate中动态调用SetButtons或者InsertButton函数添加相应按钮,或者在外部调用InsertButton public版本(引用)添加按钮。
4、在MainFrm中动态创建工具条。
一切就绪后问题出现了,工具栏图标没有显示,而鼠标hover时tooltip中却可以看见加载的图标。
在网上google一天,始终得不到答案。
无奈之下,试着在Create后调用LoadToolbar,加载一个已经存在的toolbar资源,然后调用RemoveAllButtons,删除原本的所有按钮,然后再动态添加按钮,奇迹出现了!所有图片都能构显示出来。最终还是实现了想要的效果!
翻看源码后,任然没有找到答案,只有先记在这里。希望知道的人能告诉一声。下面是我的代码。
// 创建工具条 if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC, CRect(1, 1, 1, 1), USERTOOLBAR) ||!m_wndToolBar.LoadToolBar(theApp.m_bHiColorIcons ? IDR_MAINFRAME_256 : IDR_MAINFRAME)){//TRACE0("未能创建工具栏\n");return false; // 未能创建}m_wndToolBar.RemoveAllButtons();if (CMFCToolBar::GetUserImages() == NULL){// 加载用户定义的工具栏图像if (m_UserImages.Load(_T(".\\toolbar32.bmp"))){m_UserImages.SetImageSize(CSize(32, 32), TRUE);CMFCToolBar::SetSizes(CSize(32, 32), CSize(32, 32));CMFCToolBar::SetUserImages(&m_UserImages);}}// 在这里CMFCToolBarButton()第四个参数需要设置为true,这样在重绘的时候才会,调用自己设置的图像。 int a = m_UserImages.GetCount();//添加按钮1m_wndToolBar.InsertButton(CMFCToolBarButton(2000, 0, NULL, TRUE, 0));// 设置按钮提示m_wndToolBar.SetButtonText(0, L"测试按钮1");//添加按钮2m_wndToolBar.InsertButton(CMFCToolBarButton(2001, 1, NULL, TRUE, 0));m_wndToolBar.SetButtonText(1, L"测试按钮2");//添加按钮3m_wndToolBar.InsertButton(CMFCToolBarButton(2002, 2, NULL, TRUE, 0));m_wndToolBar.SetButtonText(2, L"测试按钮3");m_wndToolBar.AdjustSizeImmediate();//根据按钮大小调整工具栏
消息响应函数
afx_msg void OnCustomButtonCmd(UINT id); //id即为触发的工具条按钮IDvoid CMainFrame::OnCustomButtonCmd(UINT id){}BEGIN_MESSAGE_MAP(CMainFrame, CFrameWndEx) ON_COMMAND_RANGE(2000, 2500, &OnCustomButtonCmd)END_MESSAGE_MAP()
加载的图片资源:
效果图片:
阅读全文
0 0
- 动态创建CMFCToolbar并添加按钮
- CMFCToolBar工具条添加下拉菜单按钮
- android:动态创建多个按钮 并给每个按键添加监听事件
- 【Android开发学习30】动态创建多个按钮,并给每个按键添加监听事件
- android:动态创建多个按钮 并给每个按键添加监听事件
- WPF动态添加按钮并相应事件。
- WPF动态添加按钮并相应事件。
- 动态创建按钮及添加消息响应
- 如何动态创建按钮,并响应消息
- NGUI 创建自定义按钮并添加按钮响应
- js动态创建按钮并控制按钮的形式
- Android 动态添加按钮,并获取id,添加事件
- 动态创建物体并添加刚体属性
- JdbcTemplate 动态创建表并添加数据
- MFC动态创建创建的按钮添加响应函数
- CMFCTOOLBAR添加组合框
- 创建一个flash as3.0按钮并添加超链接
- Java swing创建按钮并添加到面板中
- Top 10 Machine Learning Algorithms for Beginners
- 面试技巧
- 7.JSP技术
- 简单泊车管理系统-c++实现
- Google Developers:发布TensorFlow Lite
- 动态创建CMFCToolbar并添加按钮
- C和指针之数组和函数部分总结
- 多元时间序列分析基础一
- POJ 1182 食物链 (并查集解法)(详细注释)
- C
- Ubuntu16.04安装Redis
- 【算法】Kruskal算法(解决最小生成树问题) 含代码实现
- A. Local Extrema
- Hbase原理、基本概念、基本架构