冻结窗格怎么设置焦点指示器是什么意思?

90第2章 菜单、工具栏和状态栏的设计-第5页
上亿文档资料,等你来发现
90第2章 菜单、工具栏和状态栏的设计-5
组indicators数组,它被MFC用做状态栏;这个数组中的元素是一些标识常量或是字串资源的ID;ID_SEPARATOR是用于标识信息行窗格的,;息行窗格中显示;ID_INDICATOR_CAPS是用于标识指示;就是在键盘左边的那个控制大小写转换的键;ID_INDICATOR_NUM是用于标识指示器;ID_INDICATOR_SCRL是用于标识指示;ID
组indicators数组,它被MFC用做状态栏的定义,见图2.3.1所示。这个数组中的元素是一些标识常量或是字串资源的ID标识符。默认的indicators数组包含了4个元素,它们是:ID_SEPARATOR
是用于标识信息行窗格的,菜单项或工具栏按钮的许多信息都在这个信息行窗格中显示。ID_INDICATOR_CAPS
是用于标识指示器窗格显示出CapsLock键的状态(大写),CapsLock键就是在键盘左边的那个控制大小写转换的键。ID_INDICATOR_NUM
是用于标识指示器窗格显示出NumLock键状态(数字)。ID_INDICATOR_SCRL
是用于标识指示器窗格显示出ScrollLock键的状态(滚动)。 {ID_SEPARATOR,ID_INDICATOR_CAPS,ID_INDICATOR_NUM,ID_INDICATOR_SCRL,}图2.3.1 indicators数组元素与标准状态栏窗口的关系 2.3.2
状态栏的常用操作Visual C++6.0中可以方便地对状态栏进行操作,如增加窗格、减少窗格、在状态栏中 显示文本、改变状态栏的风格大小等,并且MFC的CStatusBar类封装了状态栏的大部分操作。1、增加和减少窗格状态栏中的窗格可以分为信息行窗格和指示器窗格2类:(1)若在状态栏中增加一个信息行窗格,则只需要在indicators数组的适当位置增加一个ID_SEPARATOR标识即可。(2)若在状态栏中增加一个用户指示器窗格,则在indicators数组中的适当位置增加一个在字符串表中定义过的资源ID,其字符串的长度表示用户指示器窗格的大小。(3)若状态栏减少一个窗格,其操作与增加相类似,只需减少indicators数组元素即可。2、在状态栏上显示文本(1)调用CWnd::SetWindowText更新信息行窗格(或窗格0)中的文本。由于状态栏也是一种 窗口,故在使用时可直接调用。若状态栏变量为m_wndStatusBar显示为m_wndStatusBar。 SetWindowText(“消息”)语句将在信息行窗格(或窗格0)内显示“消息”字样。(2)手动处理状态栏的ON_UPDATE_COMMAND_UI更新消息,并在处理函数中调用:CCmdUI::SetText函数。(3)调用CStatusBar::SetPaneText函数更新任何窗格(包括信息行窗格)中的文本,此函 数原型描述如下:BOOL SetPaneText(int nIndex,LPCTSTR lpszNewText,BOOL bUpdate=TRUE); 参
数:1、nIndex是表示设置的窗格索引(第1个窗格的索引为0)2、lpszNewText表示要显示的字符串,若bUpdate为TRUE,则系统自动更新显示的结果。 下面我们用两种方法在状态栏中显示鼠标在客户区的位置: 例 2.8
在状态栏的最右边两个窗格中显示出当前鼠标在窗口客户区的位置。(1)创建一个单文档应用程序(或用上个“多个工具栏”程序),名为:状态栏(2)将项目工作区切换到ClassView页面,展开CMainFrame所有项,双击CMainFrame() 函数,在文档窗口中出现该函数的定义,在它的前面是状态栏数组的定义。(3)将状态栏indicators数组的定义改为下列代码:static UINT indicators[] = {
ID_SEPARATOR,
// status line indicatorID_SEPARATOR,};(4)将鼠标移动消息WM_MOUSEMOVE映射到视图类“状态栏View”中。由于鼠标移动消息WM_MOUSEMOVE 在CMainFrame类映射后不起作用,因此只能映射到视图“状态栏View” 类中。但是,这样一来,就需要更多的代码,因为状态栏对象m_wndStatusBar是CMainFrame类定义的成员变量,因而需要在视图类“状态栏View”中添加访问CMainFrame类的代码。 void CNnView::OnMouseMove(UINT nFlags, CPoint point){
//获得主窗口指针CMainFrame *pFrame=(CMainFrame*)AfxGetApp()-&m_pMainW
//获得主窗口中的状态栏指针CStatusBar *pStatus=&pFrame-&m_wndStatusBif(pStatus){
str.Format(&X=%d,Y=%d&,point.x,point.y);//格式化文本
//这里”1”是更新第2个窗格的文本,而”0”是第1窗格pStatus-&SetPaneText(1,str);}}(5)将MainFrm.h文件中的受保护变量m_wndStatusBar变为公共变量。(6)在“状态栏View.cpp”视图类执行文件的头部写:#include “MainFrm.h”。(7)编译运行,结果见图2.3.2所示。3、改变状态栏的风格在MFC的CStatusBar类中,有2个成员函数可以改变状态栏风格,他们是:void SetPaneInfo(int nIndex,UINT nID,UINT nStyle,int cxWidth);viod SetPaneStyle(int nIndex,UINT nStyle);参
数:nIndex表示要设置的状态栏窗格的索引nID用于为状态栏窗格指定新的IDcxWidth表示窗格的像素宽度nStyle表示窗格的风格类型,用于指定窗格的外观,例如:SBPS_POPOUT表示窗格是凸起来的,状态栏窗格的风格类型如表2.6所示:(8)在上面的OnMouseMove(UINT nFlags, CPoint point)函数里加:void CNnView::OnMouseMove(UINT nFlags, CPoint point){
... //下面函数第一个参数表示状态栏窗格索引,第二个参数见表2.6所示pStatus-&SetPaneStyle(1,SBPS_POPOUT);str.Format(&X=%d,Y=%d&,point.x,point.y); //格式化文本pStatus-&SetPaneText(1,str);
//更新第2个窗格的文本}表2.6 状态栏窗格的风格类型风格类型
含义SBPS_NOBORDERS
窗口周围没有3D边框SBPS_POPOUT
反显边界以使文字“凸出来”SBPS_DISABLED
禁用窗格,不显示文本SBPS_STRETCH
拉伸窗格,并填充窗格不用的空白空间。但状态栏只能有一个窗格具有这种风格SBPS_NORMAL
普通风格,它没有”拉伸”,”3D边框”或”凸出来”等特性 编译运行,见状态栏的第2个窗格凸起来了,如图2.3.3所示 图2.3.2 鼠标的位置显示在状态栏上
图2.3.3 改变状态栏的风格例 2.9 用与例2.8不同的方法,在状态栏的最右边两个窗格中显示出当前鼠标在窗口客户区的位置。(1)建一个单文档的应用程序,名为:状态栏风格(2)将项目工作区窗口切换到ResourceView页面,双击”String Table”项的:“String Table”图标,则在主界面的右边出现字符串编辑器。在字符串列表的最后一行的 空项上双击鼠标左键,弹出一个对话框如图2.3.4所示:
图2.3.4 字符串属性对话框 (3)在该对话框中,用户可以指定相应的ID和字符串值,这里加入2个ID和其字符串资源, 即:ID_LEFT(在Caption处写:X=999)和ID_RIGHT(在Caption处写:Y=999),其字符的多少决定窗 格的大小,其结果如图2.3.5所示。(4)打开MainFrm.cpp文件,将原先的indicators数组修改如下:static UINT indicators[] ={
ID_SEPARATOR,
// 第一个信息行窗格
ID_SEPARATOR,
// 第二个信息行窗格ID_LEFT,
// 第三个窗格ID_RIGHT,
// 第四个窗格}; 图2.3.5
添加的字符串资源 (5)由于ClassWizard不能组织相应的命令更新消息的映射,用户必须手工添加消息处理函 数原型。打开CMyView.h文件,在AFX_MSG内增加消息处理语句,ClassWizard以后允许用 户访问和编辑该代码。protected://{{AFX_MSG(CQqView)// NOTE - the ClassWizard will add and remove member functions here.
afx_msg void OnUpdateXY(CCmdUI *pCmdUI);//
DO NOT EDIT what you see in these blocks of generated code !//}}AFX_MSGCCmdUI没有基类,和CCmdTarget派生类的ON_UPDATE_COMMAND_UI句柄一起使用。当用户按说
明: 下一个菜单,每个菜单项需要知道自己是显示成可以使用的还是不可以使用的,菜单项通过执行ON_UPDATE_COMMAND_UI局柄来实现它。当菜单被按下,框架寻找并且唤醒ON_UPDATE_COMMAND_UI句柄,每一个句柄调用CCmdUI的一个功能(如Enable and Check),然后框架就相应的现实每一个菜单项。一个菜单项不用改变实现ON_UPDATE_COMMAND_UI的代码就能够用按钮或块捷键代替(6)打开View.cpp文件,在其消息映射入口处添加消息映射宏函数BEGIN_MESSAGE_MAP(CQqView, CView)//{{AFX_MSG_MAP(CQqView)// NOTE - the ClassWizard will add and remove mapping macros here.ON_UPDATE_COMMAND_UI(ID_LEFT,OnUpdateXY)ON_UPDATE_COMMAND_UI(ID_RIGHT,OnUpdateXY)//
DO NOT EDIT what you see in these blocks of generated code!//}}AFX_MSG_MAP// Standard printing commands(7)在视图类(View)增加修改状态栏指示器的消息映射函数代码,当状态栏的窗格需要更新 时,应用程序框架自动调用此函数(全用手写)。 void CMyView::OnUpdateXY(CCmdUI *pCmdUI){ pCmdUI-&Enable(TRUE);//使窗格文本能被更新
明:CCmdUI类对象方法(成员函数也叫对象方法)如下:对象方法
作 用ContinueRouting()
告诉命令发送机构沿着handlers键继续发送当前的消息Enable()
为该命令激活或关闭用户界面项SetCheck()
为该命令设置用户界面项的核对状态SetRadio()
类似SetCheck成员函数,但通过单选组操作SetText()
为这个命令设置用于用户界面的文本(8)用ClassWizard在视图类View中加入WM_MOUSEMOVE(鼠标移动)消息处理函数,并添加下列代码。该函数先获得状态栏对象的指针,然后调用SetPaneText函数更新第三和第四窗格中的文本。void CMyView::OnMouseMove(UINT nFlags,CPoint point)
CSCMainFrame *pFrame=(CMainFrame*)AfxGetApp()-&m_pMainW //获得主窗口指针
CStatusBar *pStatus=&pFrame-&m_wndStatusB //获得主窗口中的状态栏指针
if(pStatus){
str.Format(“X=%d”,point.x);//格式化文本包含各类专业文献、生活休闲娱乐、幼儿教育、小学教育、外语学习资料、文学作品欣赏、各类资格考试、高等教育、90第2章 菜单、工具栏和状态栏的设计等内容。 
 第2章 菜单、工具栏和状态栏的设计 例 2.2 在顶层菜单栏里建立一个菜单项,并在其下面建立带有子菜单的菜单项,使有 的子菜单具有加速键、变灰和核对符,又使...  实验五【实验目的】 菜单、工具栏、状态栏程序设计 1、掌握主菜单程序设计方法 2、学会工具栏程序设计 3、掌握快捷菜单程序设计方法 4、学会增加状态栏窗格 【实验...  第四章 菜单、工具栏与状态栏第四章 菜单、工具栏与状态栏隐藏&& Windows 风格...&1&下拉菜单设计 (1) (2)了解项集合编辑器 &2&弹出式菜单设计 编辑控件通...  了解菜单的定义,种类; 2. 理解的下拉式菜单、弹出式菜单创建的方法; 3. 掌握工具栏的创建方法、编写事件代码。 菜单、工具栏的设计 教学过程 ? 预备知识一、...  第4 章 菜单、工具栏和状态栏菜单、工具栏和状态栏是 Windows 文档应用程序中...4.1.1 菜单一般规则为了使应用程序更容易操作,对于菜单系统的设计还应遵循下列...  菜单、 菜单、工具栏和状态栏 1 菜单 1.1 菜单编辑器 VB 提供的菜单编辑器来设计实现。 菜单编辑器的启动方式: (1) 选择“工具/菜单编辑器”命令。 (2) ...  c++ 第5章 菜单、工具栏... 51页 免费喜欢...实验5 实验目的和内容 菜单、工具栏和状态栏 (1)...(2)在工具栏上添加并设计一个工具按钮图标,使该...  (2) 单击工具栏最右侧的空白按钮,在资源编辑器的按钮设计窗口中绘制一个圆,...c++ 第5章 菜单、工具栏... 51页 免费 ch5 菜单 工具栏和状态栏... 21...  工具栏和状态栏的制作和使用方法 二. 实验要求: 7.1 使用菜单编辑器对菜单...7.3 利用开发平台的多文档创建, 观测菜单程序的设计方法, 建立起多种不同的...2014年职称计算机考前模拟试题及答案_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
2014年职称计算机考前模拟试题及答案
阅读已结束,如果下载本文需要使用
想免费下载本文?
你可能喜欢wincc flexible 报警指示器的报警函数_百度知道
wincc flexible 报警指示器的报警函数
怎么用,对象名显示无值?而且还不能新建。请问这个函数的作用是什么为什么选用这个报警函数时
提问者采纳
后来我新建了项目试了一下,然后在函数的对象名中旋转这个报警窗口就可以。当有报警时报警指示器回显示刚开始不太理解你的意思。函数ShowAlarmWindow是隐藏或显示 HMI 设备上的报警窗口你试试再建一个报警窗口
提问者评价
其他类似问题
为您推荐:
wincc的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 冻结窗格 的文章

 

随机推荐