利用VC++进行工具条的显示更新.docx

利用VC++进行工具条的显示更新.docx

ID:59563349

大小:12.52 KB

页数:3页

时间:2020-11-11

利用VC++进行工具条的显示更新.docx_第1页
利用VC++进行工具条的显示更新.docx_第2页
利用VC++进行工具条的显示更新.docx_第3页
资源描述:

《利用VC++进行工具条的显示更新.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、利用VC++进行工具条的显示更新MicrosoftVisualC++(以下简称VC)是一种非常方便的Windows编程工具,利用其附带的MFC类库,可以十分简便地支持各种Windows控件。例如:Windows95中新增了许多通用控件,诸如工具条、状态栏、树形视窗、动画等,而以上这些控件,在MFC类库中均可以找到相应的预定义类。应用程序只需增加一些必要的说明,就可以支持这些控件。本文谈谈比较常见的工具条控件编程。工具条编制确切地说,Windows通用控件都是由通用控制库所支持的一组窗口,工具条也不例外。从MFC类库的角度来看,工具条又是CToolBar类的一个对象。凭借MFC类库,应用程序可以

2、实现浮动工具条、工具条提示等用WindowsSDK不易实现的内容。当我们使用VC建立一个工程文件时,如果指定工具条选项,VC的AppWizard就会在应用程序的主框架窗口中添加支持工具条的代码,这些代码在缺省情况下位于MAINFRM.CPP和MAINFRM.H中。一般来说,工具条的构造、析构及其窗口的创建都由应用程序的主框架窗口所管理,当用户点击菜单栏的弹出式菜单时,Windows就要向应用程序发送WM_INITMENUPOPUP消息,以便应用程序在菜单显示之前对菜单项进行添加或修改。当使用MFC类库编程时,只要针对某一具体的菜单项进行了消息映射,并加入了相应的消息处理函数,MFC类库就会发送

3、更新用户接口命令(UPDATE_COMMAND_UI)消息,使得在菜单弹出时,应用程序的消息处理函数能对该菜单项进行处理,以确定此菜单项是被禁止、变灰或其它。与之类似,工具条也有UPDATE_COMMANDUI消息。不过,由于工具条总是处于显示状态,因此对其消息处理函数的调用是在应用程序的空闲状态处理过程中进行的,这一点与菜单项不同。但是,如果程序执行过程中需要进行较大的计算,应用程序就要长时间占用处理器资源。因此,对于应用程序的主框架窗口来说,它就无暇进入空闲状态处理,应用程序中相应的更新命令消息处理函数也就得不到调用。这就要求应用程序自身在较长时间的计算过程中,对工具条的显示更新进行维护,

4、例如,使工具条上某些按钮处于检查、可执行或变灰等状态。如果不执行这一措施,则在应用程序执行过程中,就有可能出现工具条按钮标识状态与实际过程不一致的情况。下面我们通过实例来说明。下述编码的功能是在窗口中画若干个大小和颜色随机的矩形,以此来模拟较长时间的计算过程。本例所用的VC版本为4.2,操作系统为Windows95。操作步骤如下:①用VC的AppWizard生成一工程项目ToolBar,生成过程中指定SDI(单文本项目)和DockngToolBar选项;②对该项目的资源文件进行修改,在菜单栏中添加一弹出式菜单Test,在其下附加Star及Stop菜单选项;③在工具条位图中添加两个按钮,分别对应

5、Start及Stop菜单选项;④用ClassWizard增加针对Start和Stop的消息映射入口及其相应的处理函数和UPDATECOMMAND_UI消息处理函数;⑤在CToolBarView类中加入两个变量及一个画图函数和一个检查应用程序消息队列的函数:private:BOOLm_bContinue,m_bStart;voidDrawRect(CDC*pDC);//在窗口中画一个大小和颜色随机的矩形voidCheckMsgQueue();//检查消息队列中有无消息下面是完整的代码:voidCToolBarView::OnTestStart(){m_bStart=FALSE;m_bContin

6、ue=TRUE;constintnItemsNum=4096;CClientDCdc(this);for(inti=0;m_bContinue&&(iGetControlBar(AFX_IDW_TOOLBAR));//再取得该工具条的控制对象指针CToolBarCtrl*pToolBarCtrl=&(pToolBar->GetToolBarCtrl());pToolBarCtrl->EnableButton(ID_TEST_START,FALSE);//禁止Start按钮pToolBarCtrl->EnableButton(ID_TEST_STOP,TRUE);//使能Stop按钮}这样一来,

7、工具条上Start和Stop按钮就同相应菜单项的显示状态一致了。顺便提一句,Windows通用控制库COMCTL32.DLL中关于工具条控制有一个Bug,就是当工具条上的一个按钮被按下之后紧接着被设置为禁止状态(Disabled),那么即使松开鼠标按键,该按钮也并不弹起,即它仍然保持被按下且为禁止状态。在MFC类库中通过设置有关标志位,解决了这个Bu,使得按钮被设置为禁止状态后恢复为弹起状态。类C

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。