cview类 public_在MFC单文档的View类中,如何获得指向状态栏的指针
匿名用户
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类中,如何获得指向状态栏的指针相关推荐
- MFC单文档框架编程(二): SDI框架下的消息处理
MFC单文档框架编程(一) ...................................................................................... ...
- 【数字图像处理】 二.MFC单文档分割窗口显示图片
本文是讲述<数字图像处理>系列文章,继上篇讲述BMP格式图片和显示后,该篇讲述如何对单文档进行分割.主要是采用CSplitterWnd静态分割窗口显示图片等相关知识.本文主要结合自己的课程 ...
- OpenGL MFC单文档 实现轨迹球
OpenGL MFC单文档 实现轨迹球 前言:我是一个怀揣着伟大梦想的普通男生!结果就是,一有时间就幻想着自己的伟大梦想,忘了自己下一步该迈出左脚还是右脚.这不,只顾做梦了,时光可不管我,独自一个人走 ...
- VC6.0 MFC 单文档 机器人巡检
机器人巡检 一.整体框架 主要包括三个类:场景类(CChangJing):机器人类(小车(CCar).无人机(CWuRenJi)):煤气泄露类(CMeiQiXieLou). 二.场景类 目标主要是数据 ...
- OCC-7.6.0 + MFC单文档应用入门教程
OCC-7.6.0 + MFC单文档应用 入门教程 磨刀不误砍柴工,如果你对MFC没任何基础,请先读这篇MFC的入门基础,它会降低你对这篇文章的恐惧感 开发环境说明 win7+ opencascade ...
- MFC单文档项目动态绘制十字线
MFC单文档项目动态绘制十字线 因为最近的一个项目涉及到了这方面的内容,所以基于自己已学的知识,在网上搜索了许多相关的资料,这些资料各有可取之处,但相对来说比较杂散,不够凝练.在经过一番整理及代码实践 ...
- VC6.0 MFC 单文档 五子棋游戏 基础入门
五子棋游戏 一.整体思路 1.目的:通过五子棋,掌握面向对象的思想,这是我们的目的.提升分析问题.解决问题的能力,在做项目之前要有一个系统的思路,第一步干什么,第二步干什么-- 2.思路:拿到这个问题 ...
- 用MFC单文档改写ARToolKit5.4的例子simpleLite
RToolkit5.4自带的示例是控制台程序,用MFC单文档改写过程如下: 1.开发环境 Win10,VS2017,ARToolkit5.4 2.新建MFC单文档程序Test 在类向导中,为CTest ...
- MFC单文档及其简介
MFC单文档及其简介 MFC 是一个编程框架 MFC 中的各种类结合起来构成了一个应用程序框架,它的目的就是让程序员在此基础上来 建立Windows 下的应用程序.MFC 框架定义了应用程序的轮廓,并 ...
最新文章
- beta 圆桌桌 4
- 光学基础 光学积分器-通光管及透镜阵列
- OpenResty请求参数处理
- workaround: 从product category移除settype时绕过check
- leetcode 岛屿的个数
- OpenCV 2 学习笔记(9): 定义ROI(regions of interest):给图像加入水印
- 蓝凌ekp开发_蓝凌OA系统,蓝凌EKP,蓝凌KK__房地产案例应用__恒大集团
- 1 linux中解决文件已rm删除但空间不释放的案例
- ensp 移动主机搜索不到AP信道_【分享】规模不同,无线AP覆盖方式有何不同?
- 开发板Linux内核,芯灵思SinlinxA33开发板Linux内核workqueue(附实测代码)
- 图像空域增强:直方图方法
- 【办公自动化】国土“三调”用地分类“一键”转南京分类
- FireMonkey 做界面的一个小技巧
- 在东京生活的中国IT程序员
- Python pandas.DataFrame.add_suffix函数方法的使用
- 反相器有时候为了强调低电平有效,将反相器的图形符号中的小圆圈画在输入端,如数电中的画法。有时候小圆圈在前面只表示低电平有效,没有反相的意思,例如与非门组成的RS触发器
- seller_info-获得淘宝店铺详情,获得店铺电话API接口,店铺详情接口接入说明
- 点击链接新窗口打开页面
- IOS 系统振动调用
- MySQL客户端软件安装_003