04界面编程2-控制条.doc_第1页
04界面编程2-控制条.doc_第2页
04界面编程2-控制条.doc_第3页
04界面编程2-控制条.doc_第4页
04界面编程2-控制条.doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4章 界面编程2-控制条控制条(control bar,控制栏)包括工具条(tool bar,工具栏)和状态条(status bar,状态栏),它们是构建友好GUI程序的通用界面标准,但并不是Windows API的标准部件,而是由MFC应用程序框架增加的复合控件。工具条是CToolBar类的对象,状态条是CStatusBar类的对象,这两个类都是控制条类CControlBar的派生类,而CControlBar类又是从CWnd类派生的(参见图4-1):CObject CCmdTarget CWnd CControlBar CToolBar / CStatusBar图4-1 控制条的类层次图工具条和状态条都是放置在框架窗口内部的特殊控制条窗口,前者一般位于框架窗口顶部的菜单条之下,后者一般位于框架窗口的底部,它们随其父框架窗口的移动和大小改变而调整自己的长短与位置,参见图4-2 a)。 a)b)图4-2 工具条和状态条在MFC应用程序中,会自动生成工具条和状态条,并可以通过“视图”菜单中的“工具栏”和“状态栏”菜单项,来启用(显示)和禁用(隐藏)工具条和状态条,参见图4-2 b)。由MFC应用程序框架负责管理控制栏对象的创建与显示,MFC应用程序向导为框架窗口类生成的控制栏代码位于MainFrm.h和MainFrm.cpp文件中。4.1 工具条设计MFC会为应用程序自动生成一个默认的可停靠工具条,包含若干(文件、编辑、打印、关于等)默认菜单项所对应的按钮。工具条设计的主要任务,是在该工具条中添加一些新按钮,以代表新增菜单中的若干常用菜单项,并将这些按钮与对应的菜单项ID关联在一起。当然,我们也可以创建新的工具条,并控制多个工具条的显示、隐藏、切换和停靠等。4.1.1 工具条工具条(tool bar)也叫工具栏,包含若干代表菜单项的图形按钮,是常用菜单项的可视界面。用鼠标单击工具条上的按钮,相当于启用对应的菜单项。1工具条按钮与菜单项工具条由若干可分组的图形按钮组成,一个工具条上所有按钮的图像属于同一个横条状位图,存储在同一个16色(4位)位图资源文件(*.bmp)中。每一个按钮按顺序对应于位图中的一个16像素宽15像素高的位图片断。应用程序框架会在工具条显示时,为每个按钮提供一个边框,并通过改变其边框和按钮图片的颜色,来表示按钮的按下和正常(松开)状态。不过,按钮的分组,完全由程序代码决定,而与该位图资源无关。在应用程序中单击一个按钮后,会像菜单项和快捷键一样发送一个命令消息(一般对应于一个菜单项消息)。可以自己响应UI消息来改变按钮状态和图形,不过很少需要这样做。工具条只是常用菜单的可视界面,工具条上的按钮也只不过是对应菜单项的图示代表。程序员并不需要编写任何额外的独立代码,所需的工作就是绘制按钮的图形和关联对应的菜单项ID,其他的所有工作都由菜单项的相关属性和功能来完成,包括响应代码、提示信息、启用/禁用、被按下(对应于菜单项的被选中)等。2工具条的停靠工具条的自由停靠(docking)是指,用户可以通过用鼠标拖放位于工具条头部的钳夹(gripper)来将工具条放置到框架窗口客户区的任意位置,包括靠在客户区的顶(默认)、底、左、右和悬浮在客户区的中间,参见图4-3。从MFC 4.0 开始,工具条由Windows提供的工具栏通用控件来建立,是完全可停靠的,因此工具条也称为工具栏。由MFC应用程序向导自动生成的工具条默认是可停靠的。 图4-3 可停靠工具条3默认工具条默认工具条包含“新建”、“打开”、“保存”,“剪切”、“复制”、“粘贴”,“打印”,“关于”等3组8个图形按钮,它们的图像位于同一个位图文件(resToolbar.bmp)中,参见图4-4。图4-4 默认工具条及其位图MFC应用程序向导生成的默认工具条资源脚本为(位于资源文件Student.rc中):IDR_MAINFRAME TOOLBAR 16, 15BEGIN BUTTON ID_FILE_NEW BUTTON ID_FILE_OPEN BUTTON ID_FILE_SAVESEPARATOR BUTTON ID_EDIT_CUT BUTTON ID_EDIT_COPY BUTTON ID_EDIT_PASTESEPARATOR BUTTON ID_FILE_PRINT BUTTON ID_APP_ABOUTEND其中,IDR_MAINFRAME为工具条资源ID(同默认菜单条的)、TOOLBAR为关键字、16和15为每个按钮图像块的宽和高(以像素为单位)、BUTTON(按钮)为关键字、ID_为按钮所对应的菜单项ID、SEPARATOR(分隔符)用于按钮分组。不过一般并不需要手工修改这些脚本,而是由VC提供的工具栏编辑器来代劳。4.1.2 编辑工具条我们仍以Student程序为例,说明如何向工具条中添加按钮和设置属性(本小节),以及如何添加和管理新的工具条(下一小节)。1操作步骤下面是利用VS的工具栏编辑器窗口和对应的属性窗口等,来修改默认的工具条(资源标识为IDR_MAINFRAME)的若干操作步骤:l 打开工具栏编辑器在VC项目工作区的“资源视图”页中展开“StudentStudent.rc”中的“Toolbar”资源列表,双击“IDR_MAINFRAME”项,打开工具栏编辑器,参见图4-5中部。图4-5 工具栏编辑器注意,由于VC08功能包在其自动生成的默认工具条中,将按钮图像的高从原来的15像素改成了16像素,所以在打开VC08功能包的工具栏编辑器时,会弹出如图4-6所示调整位图大小的确认对话框,需按“确定”钮才能打开工具栏编辑器。图4-6 调整工具条位图大小的确认对话框l 选择当前按钮单击位于工具条编辑窗口上部的(默认)工具条栏中的所需按钮。l 添加按钮将工具条最右边的空白按钮拖到你想加入按钮的位置。l 绘制位图可以利用“图像”菜单(参见3.2.5小节的图3-18)、图像编辑器工具条(参见3.2.5小节的图3-19)和(一般位于属性窗口上部的)“颜色”窗口中的调色板,在中部的图像编辑器窗口中绘制和修改当前按钮的位图。(在空白按钮上绘图后,VS会自动在其右边添加一个新的空白按钮)。l 修改属性在工具栏编辑器属性窗口中可以(重点是设置关键属性ID):n 键入或选择该按钮所对应的ID(应该是已有的菜单项ID)。n 修改该按钮位图的宽和高(一般不修改)。n 键入和修改该按钮所对应的提示文本(n后的为按钮的浮动提示文本)(一般在菜单项的提示串中已经包含)。l 分组按钮左/右拖动按钮半个按钮宽度,可将其:n 与右边/左边的按钮分开成不同的组。n 与左边/右边的按钮合并成同一个组。l 删除按钮将按钮拖离工具条即可。2步骤框图图4-7是在已有工具条资源中添加新按钮的基本步骤框图(粗体字为重点部分):打开工具条资源打开资源视图展开Toolbar项双击工具条ID添加按钮选中右端空白按钮拖放到所需位置绘制图案利用图像编辑器条上的工具绘制图形或从他处粘贴图片设置属性打开属性窗口选择对应菜单项ID输入提示串分组按钮左/右拖动按钮半个按钮宽度删除按钮将按钮拖离工具条图4-7 工具条编辑的主要步骤3添加字符图案按钮例如,在Student程序的工具条中,在问号按钮前加入分别用“Z”与“L”字符图案表示的“张三”菜单项(ID_ NAME_ZS)与“李四”菜单项(ID_ NAME_LS)按钮,参见图4-8。按钮上的字符图案可以利用图像菜单或图像编辑器工具条中的文本工具进行绘制,参见图4-9。 图4-8 按钮的添加(左)和显示(右)图4-9 文本工具对话框(左)及其字体对话框(右)4.1.3 添加新工具条如果1)原有的工具条不够用,需要加入第2个工具条;2)或者在程序运行当中需要在多个工具条中进行切换;则需要创建新的工具条,并且编写代码将它装入框架窗口。1步骤框图添加新工具条的工作要比在修改默认工具条复杂许多,需要添加工具条资源、添加若干按钮、编写相关代码等等,参见图4-10(粗体为重点部分)。添加工具条资源打开资源视图选中Toolbar项按鼠标右键弹出浮动菜单添加按钮定义工具条对象在CMainFrame类中定义工具条类CToolBar的对象创建并装入工具条在CMainFrame类的OnCreate函数中调用CToolBar类的CreateEx和LoadToolBar函数来创建和装入新工具条选中“插入Toolbar”菜单项双击对应ID在属性窗口中修改ID绘制图案选择对应菜单项ID停靠工具条在CMainFrame类的OnCreate函数中调用CToolBar类的EnableDocking函数和框架窗口类的DockControlBar函数来停靠工具条图4-10 添加新工具条的主要步骤图2创建工具条资源l 在项目工作区的“资源视图”页中的Toolbar资源表项上单击鼠标右键,在弹出的浮动菜单中选“插入Toolbar”菜单项,VS会自动创建一个ID为IDR_TOOLBAR1的空工具条。l 可在该工具条中加入若干图形按钮(如“姓名”和“成绩”菜单中各菜单项项所对应的按钮),参见图4-11。l 在属性窗口中修改工具条的ID(如IDR_MYTB),选择按钮对应的菜单项ID(如ID_NAME_WW)。图4-11 添加新工具条3创建和装入工具条针对前面所讲的两种情况,分别采用下列不同的方法来装入工具条:1)在框架窗口中加入多个工具条:l 创建新工具条资源。l 打开头文件MainFrm.h,在CMainFrame类中加入工具条类CToolBar的对象m_ToolBar作为公共数据成员:public:CToolBar m_ToolBar;l 在CMainFrame类的原有OnCreate函数内加入创建与装入工具条的代码,但要注意代码的顺序,且不需重复语句EnableDocking(CBRS_ALIGN_ANY);,参见下面代码的粗体部分(其余部分为自动生成的默认代码),注意对比二者中对应的斜体部分:int CMainFrame:OnCreate(LPCREATESTRUCT lpCreateStruct)if (CFrameWnd:OnCreate(lpCreateStruct) = -1)return -1;if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) |!m_wndToolBar.LoadToolBar(IDR_MAINFRAME)TRACE0(未能创建工具栏n);return -1; / 未能创建/ 创建并装入新工具条if (!m_ToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) | !m_ToolBar.LoadToolBar(IDR_MYTB)TRACE0(未能创建工具栏n);return -1; / 未能创建if (!m_wndStatusBar.Create(this) |!m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT)TRACE0(未能创建状态栏n);return -1; / 未能创建/ TODO: 如果不需要工具栏可停靠,则删除这三行m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);EnableDocking(CBRS_ALIGN_ANY);DockControlBar(&m_wndToolBar);/ 停靠新工具条m_ToolBar.EnableDocking(CBRS_ALIGN_ANY);DockControlBar(&m_ToolBar);return 0;运行结果如图4-12所示。图4-12 添加新工具条后的运行结果4相关函数说明在上面的代码中,用到了若干工具条类CToolBar的成员函数和与工具条停靠(dock)有关的框架窗口类CFrameWnd的成员函数,下面依次加以简单介绍:l 扩展创建函数CreateExCToolBar类的CreateEx函数,用于创建工具条对象并设置各种参数,其函数原型为:virtual BOOL CreateEx( / 成功返回非0 CWnd* pParentWnd, / 父窗口对象指针 DWORD dwCtrlStyle = TBSTYLE_FLAT, / 控件风格(默认为透明) / 控制条风格(默认为子窗口、可见、顶停靠) DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP, CRect rcBorders = CRect(0,0,0,0), / 边框宽度(默认无边框) UINT nID = AFX_IDW_TOOLBAR / 工具条的子窗口ID);在前面的工具条创建代码中,控制条风格参数dwStyle的其他取值(含义)为:CBRS_GRIPPER(具有可拖动的钳夹)、CBRS_TOOLTIPS(工具提示)、CBRS_FLYBY(在状态条上同步显示按钮信息)、CBRS_SIZE_DYNAMIC(动态改变大小)。l 资源装入函数LoadToolBarCToolBar类的LoadToolBar函数,用于装入工具条资源,其函数原型为:BOOL LoadToolBar( UINT nIDResource );其中nIDResource为工具条资源的ID。l 允许停靠函数EnableDocking该函数用于设置控制条在框架窗口客户区中允许停靠的位置,其函数原型为:void EnableDocking( DWORD dwDockStyle );其中,停靠风格参数dwDockStyle可取值:CBRS_ALIGN_TOP(顶定位)、CBRS_ALIGN_BOTTOM(底定位)、CBRS_ALIGN_LEFT(左定位)、 CBRS_ALIGN_RIGHT(右定位)、CBRS_ALIGN_ANY(任意定位)。CControlBar类和CFrameWnd类都有同样原型的允许停靠函数,只是CControlBar类的EnableDocking函数的输入参数dwDockStyle,多一个可取值CBRS_FLOAT_MULTI(多悬浮),允许多个控制条悬浮在单一迷你框架窗口(mini-frame window)(即控制栏窗口,参见图4-3中的左上图)中。l 停靠控制条函数DockControlBarCFrameWnd类的DockControlBar函数,用于将控制条停靠到框架窗口,其函数原型为:void DockControlBar( CControlBar* pBar, / 控制条对象指针 UINT nDockBarID = 0, / 停靠位置(0表示可任意停靠) LPCRECT lpRect = NULL / 指定停靠的非客户区位置(NULL表示不指定));4.1.4 切换工具条在创建和装入多个工具条后,除了可以将它们同时显示在框架窗口中外,还可根据程序的需要,一次只显示其中的一个或几个,并可在多个工具条之间进行切换。下面以在默认工具条(IDR_MAINFRAME)和新加工具条(IDR_MYTB)之间为例,介绍切换工具条的具体步骤和代码。1步骤与代码l 似4.1.3创建并装入新工具条。l 隐藏新加工具条。可以从如下两种方法中任选一种:n 在创建工具条函数CreateEx的第三个参数中,注释掉WS_VISIBLE项,如m_ToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | /* WS_VISIBLE | */ CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC)n 在停靠新工具条的代码后面,可加上隐藏(暂不显示)新加工具条的代码,如:ShowControlBar(&m_ToolBar, FALSE, FALSE);这里用了框架窗口类CFrameWnd的ShowControlBar成员函数,其原型为:void ShowControlBar( / 显示控制条 CControlBar* pBar, / 控制条对象的指针 BOOL bShow, / TRUE显示/FALSE隐藏 BOOL bDelay / TRUE延时显示/FALSE立即显示,一般取FALSE);l 在菜单资源中添加切换工具条的菜单项(如“视图切换工具栏”,ID为ID_CHANGE_TB),在视图类(如CStudentView)中为该菜单项添加事件处理程序(如OnChangeTb),在该函数中切换(隐藏/显示)工具条,例如:void CStudentView:OnChangeTb() CMainFrame *pFrmWnd = (CMainFrame*)GetTopLevelFrame();if(m_bTBar) pFrmWnd-ShowControlBar(&pFrmWnd-m_wndToolBar, FALSE, FALSE);pFrmWnd-ShowControlBar(&pFrmWnd-m_ToolBar, TRUE, FALSE);m_bTBar = false;else pFrmWnd-ShowControlBar(&pFrmWnd-m_ToolBar, FALSE, FALSE);pFrmWnd-ShowControlBar(&pFrmWnd-m_wndToolBar, TRUE, FALSE);m_bTBar = true;其中,m_bTBar为bool型类变量,可在视图类的头文件中定义,并在视图类的代码文件的构造函数中设置其初值为true。另外,还需要修改CMainFrame类中原为保护型(protected:)的类变量m_wndToolBar为公共型(public:)的类变量,并且在CStudentView类的代码文件CStudentView.cpp中(位置必须位于语句“#include stdafx.h”之后)包含CMainFrame类的头文件:#include MainFrm.h运行结果如图4-13所示。 图4-13 工具条切换2步骤框图图4-14是切换工具条操作与代码的主要步骤的图示。在CMainFrame类的OnCreate函数中调用框架窗口类的ShowControlBar函数来隐藏新加工具条切换工具条在CMainFrame类的头文件中修改类变量m_wndToolBar为公共型创建并装入工具条(参见图4-10)在视图类的头文件中添加bool型类变量m_bTBar在视图类的构造函数中设置m_bTBar的初值为true在视图类的代码文件头部的 #include stdafx.h语句之后包含CMainFrame类的头文件在“视图”菜单中添加“切换工具栏”菜单项为“切换工具栏”菜单项添加事件处理程序利用GetTopLevelFrame函数获取主框架窗口对象根据m_bTBar的当前值,调用ShowControlBar函数来显示/隐藏各工具条,然后反置m_bTBar值图4-14 工具条切换的主要步骤4.1.5 设置按钮状态菜单项可以被设置成禁用(灰化)/ 启用(激活)和是否选中(勾符),作为菜单项图示的工具条按钮也有对应的禁用(灰化)/ 启用(正常)和是否按下等状态。不过,工具条按钮的禁用/启用与其对应菜单项的禁用/启用完全同步、工具条按钮的是否按下也与其对应菜单项的是否选中完全同步,因此并不需要对工具条按钮的状态进行额外的单独设置和处理。下面以Student程序的“姓名张三”菜单项为例,可单击对应按钮Z让其在按下与还原之间切换。具体步骤如下:l 可在CStudenView类中设置一个布尔型数据成员m_bZs (bool m_bZs;)。l 在该类的构造函数中将变量m_bZs初始化为假 (m_bZs = false;)。l 在消息响应函数OnNameZs中,切换该变量的真假 (m_bZs = ! m_bZs;)。l 在对应同一ID(ID_NAME_ZS)的“张三”菜单项和“Z”按钮的UI更新命令的消息响应函数OnUpdateNameZs中,根据m_bZs值来设置按钮是否按下及菜单项是否选中:void CStudentView:OnUpdateNameZs(CCmdUI* pCmdUI) pCmdUI-SetCheck(m_bZs);4.2 状态条状态条(status bar)也叫状态栏,它既不接受用户输入,也不产生命令消息,只能用于显示提示和状态信息及其他文本串。状态条窗口由若干文本窗格(pane)组成,窗格可分成两类:用于显示提示串和用户数据的消息行窗格(ID_SEPARATOR = 0)和用于显示键盘上若干切换键的当前状态的状态指示窗格(ID_INDICATOR_*)。状态条中窗格的布局,由若干无符号整数类型的状态条指示器(indicator,指示符)数组来确定。由MFC应用程序向导自动生成的默认的状态条,只有一个用于显示菜单项提示串的消息行窗格和用于显示键盘上三个切换键的当前状态的指示窗格。若想在状态条中显示其他用户提示信息和应用程序数据,就必须修改在默认状态条所对应的指示器数组以添加若干消息行窗格,并添加一些相关设置和显示代码。4.2.1 默认状态条默认状态条中有一个用于显示菜单项提示串的可伸缩窗格,位于状态条的左端;以及三个分别表示大写锁定、数字锁定和滚动锁定键当前状态的指示器窗格,位于状态条右端,参见图4-15。图4-15 默认状态条默认状态条在CMainFrame类中对应于保护型数据成员CStatusBar m_wndStatusBar;,在MainFrm.cpp文件的前部有包含若干状态条指示器的无符号整数型数组indicators:static UINT indicators =ID_SEPARATOR, / 状态行指示器 ID_INDICATOR_CAPS, / Caps Lock(大写锁定)指示符ID_INDICATOR_NUM, / Num Lock(数字锁定)指示符ID_INDICATOR_SCRL, / Scroll Lock(滚动锁定)指示符;在CMainFrame类的消息响应函数OnCreate内,有相应的状态条创建代码:if (!m_wndStatusBar.Create(this) | !m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT)TRACE0(未能创建状态栏n);return -1; / 未能创建4.2.2 常用成员函数状态条类常用的成员函数有:创建函数Create、设置指示器函数SetIndicators、设置窗格信息函数SetPaneInfo和设置窗格文本函数SetPaneText,前两个函数在上面的创建默认状态条代码中已经被使用,后两个函数则用于定制状态条中的窗格属性设置和文本显示。1创建函数状态条的创建函数Create的原型为:virtual BOOL Create( / 成功返回非0 CWnd* pParentWnd, / 父窗口对象的指针 / 窗口风格,默认为子窗口、可见、位于框架窗口底部 DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_BOTTOM, UINT nID = AFX_IDW_STATUS_BAR / 状态条子窗口ID);2设置指示器函数函数SetIndicators利用指示器数组来设置状态条的窗格布局,其原型为:BOOL SetIndicators(/ 成功返回非0 const UINT* lpIDArray, / 指示器数组的指针 int nIDCount / 指示器个数 = sizeof(indicators)/sizeof(UINT);3设置窗格信息函数SetPaneInfo函数用于设置窗格的各种参数信息,其函数原型为:void SetPaneInfo( int nIndex, / 索引序号 UINT nID, / ID值 UINT nStyle, / 窗格风格 int cxWidth / 窗格宽度(以1/4英文字母为一个逻辑单位);其中nStyle可取值:l SBPS_NOBORDERS:窗格周围无三维边框。l SBPS_POPOUT:窗格突出显示。l SBPS_DISABLED:不画文本。l SBPS_STRETCH:伸缩窗格以填满剩余空间(每个状态条中只能有一个窗格可以被设置成伸缩的)。l SBPS_NORMAL:不伸缩、无边框、不凸显。例如:m_wndStatusBar.SetPaneInfo(1, xName, SBPS_NOBORDERS, 8);4设置窗格文本函数函数SetPaneText用于设置在指定窗格中显示的文本串,其函数原型为:BOOL SetPaneText(/ 成功返回非0 int nIndex, / 索引序号 LPCTSTR lpszNewText, / 文本串指针 BOOL bUpdate = TRUE / 是否更新);其中nIndex取不同的值,对应于不同的窗格。例如:m_wndStatusBar.SetPaneText(1, Lx:);4.2.3 定制状态条下面通过一个具体例子,介绍如何在MFC应用程序中创建、设置并使用定制状态条的基本方法。我们在Student程序的默认状态条中,去掉3个切换键指示器,添加4个消息行窗格来显示鼠标当前位置的x、y坐标值,参见图4-16。图4-16 定制状态条1定制步骤下面在主框架窗口类中创建和设置定制状态条的具体步骤:l 将CMainFrame类中的保护数据成员m_wndStatusBar改为公共的,为在视图类中显示窗格文本作准备。l 在头文件MainFrm.h中加入表示ID值(等于窗格序号)的枚举变量,以便于程序员阅读和维护代码,如:enum SBID prompt, xName, xVal, yName, yVal;l 在代码文件MainFrm.cpp中,去掉原indicators数组中的三个状态指示窗格的ID,加入若干消息行窗格ID(ID_SEPARATOR),其中第1个(nIndex = 0)用于显示提示信息,其余的用作应用程序的数据显示。例如:static UINT indicators =ID_SEPARATOR, / 提示 nIndex = 0ID_SEPARATOR,/ x: nIndex = 1ID_SEPARATOR,/ x值nIndex = 2ID_SEPARATOR, / y: nIndex = 3ID_SEPARATOR, / y值nIndex = 4;l 在代码文件MainFrm.cpp中创建状态条的代码后面,用函数SetPaneInfo来设置每个窗格的ID、风格和宽度。并用函数SetPaneText在窗格中显示文本信息。例如,可在CMainFrame:OnCreate函数尾部的return语句之前添加如下代码段:m_wndStatusBar.SetPaneInfo(0, prompt, SBPS_STRETCH,0); / 提示m_wndStatusBar.SetPaneInfo(1, xName, SBPS_NOBORDERS, 8); / x:m_wndStatusBar.SetPaneText(xName, Lx:);m_wndStatusBar.SetPaneInfo(2, xVal, SBPS_NORMAL, 24); / x值m_wndStatusBar.SetPaneInfo(3, yName, SBPS_NOBORDERS, 8); / y:m_wndStatusBar.SetPaneText(yName, Ly:);m_wndStatusBar.SetPaneInfo(4, yVal, SBPS_NORMAL, 24); / y值2显示文本在MFC应用程序中,先利用GetTopLevelFrame函数获取主框架窗口的对象,再利用状态条对象及其成员函数SetPaneText来设置状态条窗格中的文本。例如,在Student程序中,可为视图类添加鼠标移动(WM_MOUSEMOVE)的消息响应函数(OnMouseMove),并根据鼠标的当前位置,用SetPaneText函数来动态修改对应窗格中的文本串。如(其中粗体部分为手工添加的):void CStudentView:OnMouseMove

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论