没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|其它|编辑:郝浩|2006-07-28 16:59:00.000|阅读 2759 次
概述:
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
Microsoft Visual C++(以下简称VC)是一种非常方便的Windows编程工具, 利用其附带的MFC类库,可以十分简便地支持各种Windows控件。例如:Windows
95中新增了许多通用控件,诸如工具条、状态栏、树形视窗、动画等,而以上这些控件, 在MFC类库中均可以找到相应的预定义类。应用程序只需增加一些必要的说明,就可以支持这些控件。本文谈谈比较常见的工具条控件编程。
工具条编制
确切地说,Windows通用控件都是由通用控制库所支持的一组窗口, 工具条也不例外。从MFC类库的角度来看,工具条又是CToolBar类的一个对象。凭借MFC类库,应用程序可以实现浮动工具条、
工具条提示等用Windows SDK不易实现的内容。当我们使用VC建立一个工程文件时,如果指定工具条选项,
VC的AppWizard就会在应用程序的主框架窗口中添加支持工具条的代码,这些代码在缺省情况下位于 MAINFRM.CPP 和MAINFRM.H中。
一般来说,工具条的构造、析构及其窗口的创建都由应用程序的主框架窗口所管理,当用户点击菜单栏的弹出式菜单时,
Windows就要向应用程序发送WM_INITMENUPOPUP消息,以便应用程序在菜单显示之前对菜单项进行添加或修改。 当使用MFC类库编程时,只要针对某一具体的菜单项进行了消息映射,并加入了相应的消息处理函数,
MFC类库就会发送更新用户接口命令(UPDATE_COMMAND_UI)
消息,使得在菜单弹出时,应用程序的消息处理函数能对该菜单项进行处理,以确定此菜单项是被禁止、变灰或其它。与之类似,工具条也有UPDATE_COMMANDU
I消息。 不过,由于工具条总是处于显示状态,因此对其消息处理函数的调用是在应用程序的空闲状态处理过程中进行的,这一点与菜单项不同。
但是,如果程序执行过程中需要进行较大的计算,应用程序就要长时间占用处理器资源。因此,对于应用程序的主框架窗口来说,它就无暇进入空闲状态处理,应用程序中相应的更新命令消息处理函数也就得不到调用。这就要求应用程序自身在较长时间的计算过程中,对工具条的显示更新进行维护,例如,使工具条上某些按钮处于检查、可执行或变灰等状态。如果不执行这一措施,则在应用程序执行过程中,就有可能出现工具条按钮标识状态与实际过程不一致的情况。下面我们通过实例来说明。下述编码的功能是在窗口中画若干个大小和颜色随机的矩形,以此来模拟较长时间的计算过程。本例所用的VC版本为4.2,操作系统为Windows
95。操作步骤如下:
①用VC的AppWizard生成一工程项目ToolBar,生成过程中指定SDI(单文本项目)和Dockn g ToolBar选项;
②对该项目的资源文件进行修改,在菜单栏中添加一弹出式菜单Test,在其下附加Star 及Stop菜单选项;
③在工具条位图中添加两个按钮,分别对应Start及Stop菜单选项;
④用ClassWizard增加针对Start和Stop的消息映射入口及其相应的处理函数和UPDATEC OMMAND_UI消息处理函数;
⑤在CToolBarView类中加入两个变量及一个画图函数和一个检查应用程序消息队列的函数:
private:
BOOL m_bContinue, m_bStart;
void DrawRect(CDC *pDC);
//在窗口中画一个大小和颜色随机的矩形
void CheckMsgQueue();
//检查消息队列中有无消息
下面是完整的代码:
void CToolBarView::OnTestStart()
{
m_bStart = FALSE;
m_bContinue = TRUE;
const int nItemsNum = 4096;
CClientDC dc(this);
for (int i = 0; m_bContinue && (i GetControlBar(AFX_IDW_TOOLBAR));
// 再取得该工具条的控制对象指针
CToolBarCtrl *pToolBarCtrl = &(pToolBar->
GetToolBarCtrl());
pToolBarCtrl->EnableButton(ID_TEST_START,FALSE);
//禁止Start按钮
pToolBarCtrl->EnableButton(ID_TEST_STOP,TRUE);
//使能Stop按钮
这样一来,
工具条上Start和Stop按钮就同相应菜单项的显示状态一致了。顺便提一句,Windows通用控制库COMCTL32.DLL中关于工具条控制有一个Bug,就是当工具条上的一个按钮被按下之后紧接着被设置为禁止状态(Disabled),那么即使松开鼠标按键,
该按钮也并不弹起,即它仍然保持被按下且为禁止状态。在MFC类库中通过设置有关标志位, 解决了这个Bu, 使得按钮被设置为禁止状态后恢复为弹起状态。
类CToolBarCtrl提供了Windows工具条通用控制的各项功能, 但这些功能仅在Windows9 5或Windows NT 3.51及以上环境下有效。
利用这一控制,可以使用户方便地设置工具条,比如改变工具条上的按钮状态、删除或增加工具条按钮等。关于类CToolBarCtrl,
VC++4.2附带提供了一个比较详细的编程实例CMNCTRLS,可以作为参考.
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com
接DevExpress原厂商通知,将于近日上调旗下产品授权价格,现在下单客户可享受优惠报价!
面对“数字中国”建设和中国制造2025战略实施的机遇期,中车信息公司紧跟时代的步伐,以“集约化、专业化、标准化、精益化、一体化、平台化”为工作目标,大力推进信息服务、工业软件等核心产品及业务的发展。在慧都3D解决方案的实施下,清软英泰建成了多模型来源的综合轻量化显示平台、实现文件不失真的百倍压缩比、针对模型中的大模型文件,在展示平台上进行流畅展示,提升工作效率,优化了使用体验。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@evget.com
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
慧都科技 版权所有 Copyright 2003-
2025 渝ICP备12000582号-13 渝公网安备
50010702500608号