匿名用户

1级

2016-01-18 回答

众所周知,View窗口覆盖在主窗口MainFrame之上。在CView类的WN_MOUSEMOVE消息响应函数中操作状态栏,可以显示鼠标的位置坐标。这需要在CView类中获得CMainFrame类的指针,然后才能借用CMainFrame类定义的CStatusBar m_wndStatusBar(改为public)去操作状态栏。

操作方法如下:

(1)使用AfxGetApp()函数

CMainFrame *pFrame=(CMainFrame*)AfxGetApp()-m_pMainWnd;//要求包含MainFrm.h头文件

CStatusBar *pStatus=&pFrame-m_wndStatusBar;//需要将m_wndStatusBar属性修改为公有

解释:AfxGetApp()是全局函数返回指向CWinApp类的指针

CWinApp* AfxGetApp( );

m_pMainWnd是CWinThread类的指针类成员,CWinApp是CWinApp的父类。

CWinThread和CWnd是兄弟类。CWnd的子类是CFrameWnd,CMainFrame继承于CFrameWnd。这时出现困惑,我们从CView类中获得其父类CMainFrame的指针,为什么要通过CWinApp类呢?MSDN这样解释m_pMainWnd:Use this data member to store a pointer to your thread’s main window object。既然m_pMainWnd是主窗口对象,当然可以通过强制类型转换为指向主窗口的指针,于是有(CMainFrame*)AfxGetApp()-m_pMainWnd。

事实是这样的,pFrame-m_wndStatusBar可以理解为一体,-的优先级为2,pFrame-m_wndStatusBar可以看作是m_wndStatusBar,对象取地址变为指针。

(2)使用GetParent()函数

以上的获取指向状态栏的指针的方法是最常用的方法,但存在难以理解,只会生搬硬套的问题。

在CView类内,人们最直接的想法是使用GetParent()函数直接获得父窗口CMainFrame类的指针。

CMainFrame *pFrame=(CMainFrame*)GetParent();

CStatusBar *pStatus=&pFrame-m_wndStatusBar;

其中,GetParent()返回的是CWnd类的指针。

CWnd* GetParent( ) const;

需要将其强制转换为指向CMainFrame类的指针。

(3)结论第二种方法容易理解,建议使用。

cview类 public_在MFC单文档的View类中,如何获得指向状态栏的指针相关推荐

  1. MFC单文档框架编程(二): SDI框架下的消息处理

    MFC单文档框架编程(一) ...................................................................................... ...

  2. 【数字图像处理】 二.MFC单文档分割窗口显示图片

    本文是讲述<数字图像处理>系列文章,继上篇讲述BMP格式图片和显示后,该篇讲述如何对单文档进行分割.主要是采用CSplitterWnd静态分割窗口显示图片等相关知识.本文主要结合自己的课程 ...

  3. OpenGL MFC单文档 实现轨迹球

    OpenGL MFC单文档 实现轨迹球 前言:我是一个怀揣着伟大梦想的普通男生!结果就是,一有时间就幻想着自己的伟大梦想,忘了自己下一步该迈出左脚还是右脚.这不,只顾做梦了,时光可不管我,独自一个人走 ...

  4. VC6.0 MFC 单文档 机器人巡检

    机器人巡检 一.整体框架 主要包括三个类:场景类(CChangJing):机器人类(小车(CCar).无人机(CWuRenJi)):煤气泄露类(CMeiQiXieLou). 二.场景类 目标主要是数据 ...

  5. OCC-7.6.0 + MFC单文档应用入门教程

    OCC-7.6.0 + MFC单文档应用 入门教程 磨刀不误砍柴工,如果你对MFC没任何基础,请先读这篇MFC的入门基础,它会降低你对这篇文章的恐惧感 开发环境说明 win7+ opencascade ...

  6. MFC单文档项目动态绘制十字线

    MFC单文档项目动态绘制十字线 因为最近的一个项目涉及到了这方面的内容,所以基于自己已学的知识,在网上搜索了许多相关的资料,这些资料各有可取之处,但相对来说比较杂散,不够凝练.在经过一番整理及代码实践 ...

  7. VC6.0 MFC 单文档 五子棋游戏 基础入门

    五子棋游戏 一.整体思路 1.目的:通过五子棋,掌握面向对象的思想,这是我们的目的.提升分析问题.解决问题的能力,在做项目之前要有一个系统的思路,第一步干什么,第二步干什么-- 2.思路:拿到这个问题 ...

  8. 用MFC单文档改写ARToolKit5.4的例子simpleLite

    RToolkit5.4自带的示例是控制台程序,用MFC单文档改写过程如下: 1.开发环境 Win10,VS2017,ARToolkit5.4 2.新建MFC单文档程序Test 在类向导中,为CTest ...

  9. MFC单文档及其简介

    MFC单文档及其简介 MFC 是一个编程框架 MFC 中的各种类结合起来构成了一个应用程序框架,它的目的就是让程序员在此基础上来 建立Windows 下的应用程序.MFC 框架定义了应用程序的轮廓,并 ...

最新文章

  1. beta 圆桌桌 4
  2. 光学基础 光学积分器-通光管及透镜阵列
  3. OpenResty请求参数处理
  4. workaround: 从product category移除settype时绕过check
  5. leetcode 岛屿的个数
  6. OpenCV 2 学习笔记(9): 定义ROI(regions of interest):给图像加入水印
  7. 蓝凌ekp开发_蓝凌OA系统,蓝凌EKP,蓝凌KK__房地产案例应用__恒大集团
  8. 1 linux中解决文件已rm删除但空间不释放的案例
  9. ensp 移动主机搜索不到AP信道_【分享】规模不同,无线AP覆盖方式有何不同?
  10. 开发板Linux内核,芯灵思SinlinxA33开发板Linux内核workqueue(附实测代码)
  11. 图像空域增强:直方图方法
  12. 【办公自动化】国土“三调”用地分类“一键”转南京分类
  13. FireMonkey 做界面的一个小技巧
  14. 在东京生活的中国IT程序员
  15. Python pandas.DataFrame.add_suffix函数方法的使用
  16. 反相器有时候为了强调低电平有效,将反相器的图形符号中的小圆圈画在输入端,如数电中的画法。有时候小圆圈在前面只表示低电平有效,没有反相的意思,例如与非门组成的RS触发器
  17. seller_info-获得淘宝店铺详情,获得店铺电话API接口,店铺详情接口接入说明
  18. 点击链接新窗口打开页面
  19. IOS 系统振动调用
  20. MySQL客户端软件安装_003

热门文章

  1. python教程:mixin详解
  2. python 判断是否是润年及函数封装的2种方法
  3. 3分钟教你用python制作一个简单词云
  4. Python3_实例汇总
  5. python线程join
  6. php压制错误的代码,为什么要压制PHP错误?
  7. python collections模块(数据结构常用模块)计数器Counter 双向队列deque 默认字典defaultdict 有序字典OrderedDict 可命名元组namedtuple
  8. 实战网页布局心得(一)
  9. MEGA 视频目标检测 数据集 : ILSVRC2015 VID 说明
  10. linux——vim命令详细说明