利用vc++进行工具条的显示更新.pdfVIP

  • 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_

文档评论(0)

1亿VIP精品文档

相关文档