- 1
- 0
- 约2.7千字
- 约 3页
- 2020-09-13 发布于江苏
- 举报
利用 VC++进行工具条的显示更新
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_
您可能关注的文档
- 利率市场化将使中小企获支持.pdf
- 利率市场化改革的思路.pdf
- 利率市场化下的信贷资产交易创新之道.pdf
- 利率调整对证券市场 的影响.pdf
- 利率下调对保险业的影响.pdf
- 利润为王——制造业精益成本控制方法与实践.pdf
- 利润问题专题寒假.pdf
- 利润中心规划与实务运作 试题答案.pdf
- 利思达光电企业品牌形象优化及产品写真项目方案.pdf
- 利他主义与市场经济.pdf
- 河北盐山中学等校2025-2026学年上学期高三一模化学试卷(含解析).docx
- 河北正定中学2025-2026学年高一上学期期末考试物理试卷(含解析).docx
- 河北张家口市怀安县2025-2026学年第一学期期末教学综合评价八年级地理试卷(含解析).docx
- 河南安阳市殷都区2025-2026学年第一学期期末教学质量检测七年级地理试卷(含解析).docx
- 河南安阳市滑县2025一2026学年第一学期期末学业质量监测八年级地理试题(含解析).docx
- 河南安阳市林州市2025-2026学年上学期期末考试高一政治试题(含解析).docx
- 河南焦作市武陟县第一中学2025-2026学年高一上学期1月月考语文试卷(含解析).docx
- 河南济源市2025-2026学年上学期期末学业质量调研七年级历史试卷(含解析).docx
- PICC导管并发症的紧急处理与护理.pptx
- 河南鹤壁市2025-2026学年高二上学期期末考试生物试题(含解析).docx
最近下载
- 湖北省武昌某中学2024-2025学年高一年级下册3月月考数学试卷(解析).pdf VIP
- 综合应用能力事业单位考试(社会科学专技类B类)试题与参考答案.docx VIP
- HomeFacialPro+品牌手册(精品).pdf VIP
- 昆明市一中2026届高三年级12月第五次联考数学试卷(含答案详解).pdf
- 2025年国家开放大学(电大)《供应链管理》期末考试复习试题及答案解析.docx VIP
- 2025年广州市中考数学试题卷(含答案解析).docx
- 2025年重庆市中考化学试卷真题及答案.docx VIP
- 基于YOLOv5s的校园场景多目标巡检系统研究.pdf
- 跨越施工专题培训.pptx
- 2025【基于PID算法的温湿度控制系统的设计7200字(论文)】.docx VIP
原创力文档

文档评论(0)