提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:鲍佳佳|2021-08-05 14:08:08.300|阅读 193 次
概述:上一节中讲了为Ribbon Bar添加控件的方法。本节教程将继续完善前面的实例,讲解一些稍复杂的控件的添加方法,及如何为它们添加消息处理函数。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
上一节中讲了为Ribbon Bar添加控件的方法。本节教程将继续完善前面的实例,讲解一些稍复杂的控件的添加方法,及如何为它们添加消息处理函数。
一、为Ribbon Bar添加更多Ribbon控件
将在上一节实例的基础上,继续添加下拉菜单、Check Box、Combo Box等Ribbon控件。
1、首先把“Small Button”面板上的“Click”按钮改造成一个下拉菜单。“Click”按钮有一个Behavior属性Menu Items,默认为Empty,选中它右侧会出现一个浏览按钮,点击浏览按钮会弹出“Items Editor”对话框,如下图:
我们可以在上图Items下的组合框中选择按钮、分割线等,点击组合框右侧的Add按钮将其添加到下拉菜单中,添加按钮后在Properties分组中可以设置Caption(标题)、ID、Image(图片)等属性。鸡啄米这里添加两个按钮,Caption属性分别为One Click、Double Click,ID分别为ID_ONE_CLICK、ID_DOUBLE_CLICK,Image等属性就不设置了。此时的Ribbon Bar如下图:
“Click”右侧多了一个向下的箭头,运行程序后点击此箭头会显示包含One Click和Double Click按钮的下拉菜单。另外,上图中有一个按钮鸡啄米用红线指示了其提示信息-“Test Ribbon”,点击了此按钮我们就可以不运行程序而直接查看Ribbon界面效果。
2、在Small Button面板的右侧再添加一个面板“More Controls”,然后在Toolbox工具中找到Check Box和Combo Box控件拖入新面板,Check Box的Caption属性设为“Websites Enable”,Combo Box的属性设为“Websites”。效果图如下:
我们为Websites组合框(Combo Box)添加两个下拉选项,方法是,右键点击Websites组合框,选择“Properties”,显示出其属性页,修改Data属性为“www.jizhuomi.com;www.jizhuomi.com/android”,这样就为此Combo Box添加两个网址选项。
二、为Ribbon控件添加消息处理函数
前面控件都添加好了,接下来我们就为控件添加消息处理函数。
1、首先为Open按钮添加单击事件的消息处理函数,其ID修改为ID_OPEN_BUTTON,然后右键点击Open按钮,选择“Add Event Handler”,弹出Event Handler Wizard对话框,右侧的Class list中选择“CMainFrame”,左侧的Message Type中选择“COMMAND”,最后点击“Add and Edit”按钮,CMainFrame类中就添加了void CMainFrame::OnOpenButton()成员函数。
大家可能感觉到了,其实消息处理函数的添加过程与以前的普通控件是类似的。最后修改void CMainFrame::OnOpenButton()函数的函数实现如下:
因为只是为了讲解按钮的消息处理函数的添加,所以没有写复杂的代码,只写了一个弹出MessageBox的语句。运行程序,在结果界面的Function类别的Big Button面板中,点击Open按钮就会弹出一个对话框,并显示“Open Button!”。
2、我们再为Websites组合框添加消息处理函数(方法同上),同样也为其在CMainFrame类中添加COMMAND消息处理函数--void CMainFrame::OnWebsitesCombo(),修改此函数实现如下:
C++代码
void CMainFrame::OnWebsitesCombo() { // TODO: Add your command handler code here // 获取Combo Box控件的指针 CMFCRibbonComboBox* pComboBox = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, m_wndRibbonBar.FindByID(ID_WEBSITES_COMBO)); // 获取Combo Box控件当前选中项的索引 int nCurSel = pComboBox->GetCurSel(); if (nCurSel >= 0) { // 如果索引大于等于0,则说明有选中项,弹出对话框并显示选中项的信息 MessageBox(pComboBox->GetItem(nCurSel)); } else { // 如果索引小于0,则说明没有选中项,弹出对话框提示用户进行选择 MessageBox(_T("Please select one item!")); } }
运行程序,在结果界面中,改变WebSites组合框的选中项,则会弹出对话框显示选中项的信息。如下图:
3、然后我们为Websites Enable复选框添加消息处理函数。默认情况下Check Box控件不会因为用户的点击而改变状态,这就需要我们通过代码来实现正常的复选功能。
我们需要一个变量保存Check Box的当前选中状态,所以在MainFrm.h文件中为CMainFrame类添加一个BOOL型的成员变量m_bWebsitesEnable,并在CMainFrame类的构造函数中为其初始化:
C++代码
CMainFrame::CMainFrame() { // TODO: add member initialization code here theApp.m_nAppLook = theApp.GetInt(_T("ApplicationLook"), ID_VIEW_APPLOOK_OFF_2007_BLUE); // 初始化为TRUE,即复选框为选中状态 m_bWebsitesEnable = TRUE; }
接下来仍然采用1中的方法为Websites Enable复选框在CMainFrame类中添加COMMAND消息处理函数,并修改其函数体如下:
C++代码
void CMainFrame::OnWebsitesCheck() { // TODO: Add your command handler code here // 为m_bWebsitesEnable取反,即切换复选框的状态 m_bWebsitesEnable = !m_bWebsitesEnable; }
但是现在复选框的状态只是保存到了变量中,我们还要根据变量值改变复选框的显示状态,这就需要再为Check Box添加一个UPDATE_COMMAND_UI消息处理函数,方法仍旧是右键点击Check Box,选择“Add Event Handler”,在弹出的Event Handler Wizard对话框的Class list中选择“CMainFrame”,Message type中则选择UPDATE_COMMAND_UI,最后点“Add and Edit”,这样就添加了UPDATE_COMMAND_UI消息处理函数,修改此函数实现如下:
C++代码
void CMainFrame::OnUpdateWebsitesCheck(CCmdUI *pCmdUI) { // TODO: Add your command update UI handler code here // 根据当前变量值设置复选框状态 pCmdUI->SetCheck(m_bWebsitesEnable); }
这时你可以试着运行下程序,点击Website Enable复选框,它已经能成功的改变状态了。
4、除了以上功能,我们还要实现一个稍复杂的功能,就是如果选中Websites Enable复选框则激活Websites组合框,而如果取消选中则禁用Websites组合框。这就需要我们为Websites组合框添加UPDATE_COMMAND_UI消息处理函数了,添加方法同上,鸡啄米这里不再赘述。修改函数实现为:
C++代码
void CMainFrame::OnUpdateWebsitesCombo(CCmdUI *pCmdUI) { // TODO: Add your command update UI handler code here // 根据Websites Enable复选框的状态确实激活还是禁用 pCmdUI->Enable(m_bWebsitesEnable); }
运行程序,试着改变Websites Enable复选框的状态,Websites组合框的使能状态也会跟着改变。
最后,鸡啄米再简单讲讲如何为Ribbon Bar左上角的圆形菜单按钮和快速访问工具栏添加新项。
圆形菜单按钮的属性页中有一个Buttons属性,可以点击其右侧浏览按钮弹出Items Editor对话框,使用该对话框可以在菜单按钮的弹出菜单窗口中添加右下角的按钮。还有一个Main Items属性,点其右侧浏览按钮也会弹出Items Editor对话框,通过它可以为圆形菜单按钮添加菜单项。
快速访问工具栏的属性页中有一个QAT Items属性,点击其右侧浏览按钮弹出QAT Items Editor对话框,使用该对话框可以在快速访问工具栏中添加新项。
本节内容有点多,不过并不复杂,很多都与之前的知识类似。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn
本文将探讨如何使用 Spire.XLS for .NET 在 C# 程序中导入 Excel 数据到数据库以及导出数据库到 Excel 文件,实现数据在 Excel 和数据库之间无缝流转。
在本文中,我们将向您展示如何逐步执行此操作,告诉您什么是 SCORM,为什么需要使用它,并列出我们测试过的最佳 SCORM 转换工具之一——iSpring Suite。
本文主要介绍如何使用Kendo UI for Angular组件的ListView来构建带有图表的仪表板,欢迎下载新版控件体验!
在本文中,您将学习如何使用Spire.PDF for .NET在 C# 中向 PDF 文档添加页码。
专为Windows平台开发人员提供最全面的Visual C++界面开发组件
BCGControlBar Pro for MFC用于构建类似微软Office、Visual Studio等MFC用户界面高级套包。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@pclwef.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢