获得MFC窗口其它类指针的方法

MFC 中获取各种类指针的方法 MFC 中获取各种类指针的方法: 1) 在 View 中获得 Doc 指针 2) 在 App 中获得 MainFrame 指针 3) 在 View 中获得 MainFrame 指针 4) 获得 View (已建立)指针 5) 获得当前文档指针 6) 获得状态栏与工具栏指针 7) 获得状态栏与工具栏变量 8) 在 Mainframe 获得菜单指针 9) 在任何类中获得应用程序类 10) 从文档类取得视图类的指针 (1) 11) 在 App 中获得文档模板指针 12) 从文档模板获得文档类指针 13) 在文档类中获得文档模板指针 14) 从文档类取得视图类的指针 (2) 15) 从一个视图类取得另一视图类的指针 16) 获取分割视图中各个视图的指针 立即下载
获得CWinApp:
-在CMainFrame,CChildFrame,CDocument,CView中直接调用AfxGetApp()或用theApp
-在其它类中只能用AfxGetApp()
获得CMainFrame:
-在CMinApp中用AfxGetMainWnd()或者m_pMainWnd
-在CChildFrame中可用GetParentFrame()
-在其它类中用AfxGetMainWnd()
获得CChildFrame:
-在CView中用GetParentFrame()
-在CMainFrame中用MDIGetActive()或GetActiveFrame()
-在其它类中用AfxGetMainWnd()->MDIGetActive()或AfxGetMainWnd()->GetActiveFrame()
获得CDocument:
-在CView中用GetDocument()
-在CChildFrame中用GetActiveView()->GetDocument()
-在CMainFrame中用
-if SDI:GetActiveView()->GetDocument()
-if MDI:MDIGetActive()->GetActiveView()->GetDocument()
-在其它类中
-if SDI:AfxGetMainWnd()->GetActiveView()->GetDocument()
-if MDI:AfxGetMainWnd()->MDIGetActive()->GetActiveView()->GetDocument()
获得CView:
-在CDocument中 POSITION pos = GetFirstViewPosition();GetNextView(pos)
-在CChildFrame中 GetActiveView()
-在CMainFrame中
-if SDI:GetActiveView()
-if MDI:MDIGetActive()->GetActiveView()
-在其它类中
-if SDI:AfxGetMainWnd()->GetActiveView()
-if MDI:AfxGetMainWnd()->MDIGetActive()->GetActiveView()
不过要注意在doc中要取得view的指针C*View要注意类C*View声明的问题,
因为默认情况下,mfc在*View.h中已经包含了*Doc.h,如果在*Doc.h中包含
*View.h,就会引起嵌套包含问题,这样要在*Doc.h中加入 class C*View;
而在*Doc.cpp中加入 #include "*View.h"
//////////////////////////////////////////////////////////////////
其实完全可以在CYourApp中添加各种视或文档的指针,在那些视或文档初
始化的时候将指针传给CYourApp中的对应变量,这样以后不管在哪用上面
指针只需(CYourApp*)AfxGetApp()取其属性变量即可,明了而且清楚更是
方便我一直专门操作的说:)
//////////////////////////////////////////////////////////////////
我先抛块砖,有玉的砸过来!
在何时何地,你都可以通过以下方法精确的得到任何一个对象(Application,DocTemplate,Document,View,Frame)
1。通过AfxGetApp()得到当前的App对象;
2。通过AfxGetMainWnd()得到主窗口;
3。通过CMDIFrameWnd::GetActiveFrame得到当前活动窗口;
4。通过GetNextWindow()遍例所有的子窗口;(如果要得到你想要的子窗口,可以通过特定的成员变量来标志);
5。通过CWinApp::GetFirstDocTemplatePostion()以及CWinApp::GetNextDocTemplate()的组合应用来遍历所有的DocTemplate对象,并且用CDocTemplate::GetDocString()来判断当前得到的文档莫板对象是哪个。
6。通过CDocTemplate::GetFirstDocPosition()以及CDocTemplate的GetNextDoc()组合来遍历所有的该模板的文档对象,并用CDocument::GetDocTemplate()来得到文档模板,用CDocment::GetTitle() 或者GetPathName()来判断当前的文档是哪个。
7。通过CDocuemt的GetFirstViewPositon()以及GetNextView()来遍历视图对象,一般通过访问View的成员变量来区别各个视图;通过CView::GetDocument()来得到文档对象;
8。Frame->View: 通过GetActiveView方法;
9。Frame->Doc:通过GetActiveDocument();
10。View->Frame:GetParentFrame();
11。View->Doc:GetDocuemt()//前面已经说了。
12。Doc->View:前面说了;
13。Doc->Frame:不知道有没有很直接的方法。
MFC应用程序中指针的使用
1) 在View中获得Doc指针
2) 在App中获得MainFrame指针
3) 在View中获得MainFrame指针
4) 获得View(已建立)指针
5) 获得当前文档指针
6) 获得状态栏与工具栏指针
7) 获得状态栏与工具栏变量
8) 在Mainframe获得菜单指针
9) 在任何类中获得应用程序类
10) 从文档类取得视图类的指针(1)
11) 在App中获得文档模板指针
12) 从文档模板获得文档类指针
13) 在文档类中获得文档模板指针
14) 从文档类取得视图类的指针(2)
15) 从一个视图类取得另一视图类的指针
VC中编程对于刚刚开始学习的同学,最大的障碍和问题就是消息机制和指针获取与 操作。其实这些内容基本上是每本VC学习工具书上必讲的内容,而且通过MSDN很多 问题都能解决。下面文字主要是个人在编程中指针使用的一些体会,说的不当的地 方请指正。一般我们使用的框架是VC提供的Wizard生成的MFC App Wizard(exe)框架, 无论是多文档还是单文档,都存在指针获取和操作问题。下面这节内容主要是一般 的框架,然后再讲多线程中的指针使用。使用到的类需要包含响应的头文件。首先 一般获得本类(视,文档,对话框都支持)实例指针this,用this的目的,主要可以通 过类中的函数向其他类或者函数中发指针,以便于在非本类中操作和使用本类中的功能。
1) 在View中获得Doc指针 CYouSDIDoc *pDoc=GetDocument();一个视只能有一个文
档。
2) 在App中获得MainFrame指针
CWinApp 中的 m_pMainWnd变量就是MainFrame的指针
也可以: CMainFrame *pMain =(CMainFrame *)AfxGetMainWnd();
3) 在View中获得MainFrame指针 CMainFrame *pMain=(CmaimFrame *)AfxGetApp()->m_pMainWnd;
4) 获得View(已建立)指针 CMainFrame *pMain=(CmaimFrame *)AfxGetApp()->m_pMainWnd;
CyouView *pView=(CyouView *)pMain->GetActiveView();
5) 获得当前文档指针 CDocument * pCurrentDoc =(CFrameWnd *)m_pMainWnd->GetActiveDocument();
6) 获得状态栏与工具栏指针 CStatusBar * pStatusBar=(CStatusBar *)AfxGetMainWnd()->GetDescendantWindow(AFX_IDW_STATUS_BAR);
关于获得MFC窗口其它类指针的方法.pdf 立即下载

相关推荐

ESP32系列之LVGL(四):输入设备(外部按键)对接

本文详细介绍了如何在ESP32上使用LVGL库对接外部按键作为输入设备,包括硬件连接、驱动层实现和LVGL输入设备移植。通过具体代码示例和实战案例,帮助开发者快速实现按键控制UI界面,解决常见问题如按键无反应和控件跳转不正常。

weixin_30907935的博客 241

入分析MFC文档视图结构

文档视图结构(Document/View Architecture)是MFC的精髓,也是Observer模式的具体实现框架之一,Document/View Architecture通过将数据和其表示分开,提供了很好的数据层次和表现层次的解耦。然而,虽然我们使用MFC AppWizard就可以很轻松地获得一个支持Document/View Architecture的MFC程序框架,Document/

lchunli的专栏 1253

C++游戏开发实战:从零构建局域网联机对战系统(附完整代码解析)

本文详细介绍了如何使用C++开发局域网联机对战游戏系统,涵盖从环境搭建到实战代码解析的全过程。重点讲解了Winsock库的应用、Socket通信原理、服务端与客户端开发技巧,以及性能优化和安全防护方案,帮助开发者快速掌握C++游戏开发的核心技术。

weixin_42524945的博客 444

IDR_MAINFRAME字符串资源含义

当我们在MFC单文档工程创建完成后,我们可以在其资源视图的MENU和String Table文件夹下都发现有IDR_MAINFRAME的ID号,说明一个资源ID可以标识多种资源;目前可以代表的资源有字符串资源、菜单资源;这里主要说明下IDR_MAINFRAME中各个子串的含义; 我们创建的工程名是DocTemplate,在默认情况下,IDR_MAINFRAME所代表的字符串内容如下:

Keep Moving~ 6673

python设计俄罗斯方块(附源码)

【代码】python设计俄罗斯方块(附源码)

牧魂的博客 2058

手把手教你用Docker快速部署ZLMediaKit流媒体服务器(含WebRTC配置)

本文详细介绍了如何使用Docker快速部署ZLMediaKit流媒体服务器,并配置WebRTC功能。通过容器化部署,实现环境一致性、资源隔离和快速扩展,同时提供WebRTC专项配置、多协议推拉流实战测试及生产环境优化建议,帮助开发者高效搭建企业级流媒体平台。

agile9scrum的博客 202

MFC的单文档程序修改打开文件对话框的后缀

常见方法 一种常见的方法是继承CSingleDocTemplate,然后修改GetDocString虚函数,并在BOOL CXXXApp::InitInstance 中,替换文件模板。 详细方法可以参看:MFC单文档打开文件默认后缀名修改 这个方法比较麻烦,需要新建类并继承修改虚函数。 这边介绍另一种方法 修改资源文件 在项目中搜索IDR_MAINFRAME 可以在资源文件中找到相关内容: STRINGTABLE BEGIN IDR_MAINFRAME "Emf.

sspdfn的专栏 1192

Winform从入门到精通(1)——Label(史上最全)

本篇文章是对专栏《winform控件从入门到精通》的详细介绍

qq_34059233的博客 4万+

MFC:文件

知识点补充: 1、指向常量的指针:char ch[5] = "list"; const char* pStr = ch; pStr指向的内容不可改变,pStr的指针值可以改变: *pStr = 'w';//error pStr = "vector";//ok 2、指针常量:char ch[5] = "list"; char* const pStr = ch; 指针本身是常量,指向的内容可以修

yangchuankai's blog 740

计算机视觉论文复现指南:从理论到可运行代码的保姆级教程

计算机视觉论文复现指南:从理论到可运行代码的保姆级教程​ ,人工智能,计算机视觉,大模型,AI,本文围绕计算机视觉论文复现展开,介绍从理论到可运行代码的全流程。先强调复现的重要性,再讲解复现前的准备,包括明确目标、构建工具链;接着说明代码获取分析、环境配置调优、调试运行技巧及结果验证优化方法,还推荐了高效工具,提及复现中的伦理规范。旨在助读者掌握复现方法论,实现从经典模型到前沿论文的复现,推动学术成果落地。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 12万+

Allegro如何导出和导入器件模型Signal_Model操作指导

在用Allegro做PCB设计的时候,通常需要给器件加上Signal_Model,在做等长的时候用到的非常频繁。如下图,需要把R7002的Signal_Model导入到另外一块没有给R7002加好模型的BRD中。Allegro除了可以给器件添加模型,还支持从一块加好模型的BRD导入到另外一块BRD中,如何导出和导入器件模型Signal_Model操作指导。

weixin_54787054的博客 1896

获得父窗口指针:获得MFC窗口其它类指针的方法

获得CWinApp: -在CMainFrame,CChildFrame,CDocument,CView中直接调用AfxGetApp()或用theApp -在其它类中只能用AfxGetApp() 获得CMainFrame: -在CMinApp中用AfxGetMainWnd()或者m_pMainWnd -在CChildFrame中可用GetParentFrame() -在其它类中用AfxGetMain

dadalan的专栏 5189

Python与网络爬虫案例:电影评论抓取

接下来,我们就可以通过分析该页面中的HTML代码,来确定需要抓取的内容。在这段代码中,我们首先对每个评论div元素进行for循环,然后通过find方法获取class为'title'、'text'、'rating-other-user-rating'的元素,并将结果分别赋值给title、content和rating变量。在这段代码中,我们首先定义了目标网站的URL和headers信息,然后通过requests.get方法向目标网站发送了一个GET请求,并将返回的响应赋值给了response变量。

吃不胖. 1262

关于获得MFC窗口其它类指针的方法

    MFC中菜单项消息如果利用ClassWizard来对菜单项消息分别在上述四个类中进行响应,则菜单消息传递顺序:View类--Doc类--CMainFrame类--App类。菜单消息一旦在其中一个类中响应则不再在其它类中查找响应函数。具体:    当点击一个菜单项的时候,最先接受到菜单项消息的是CMainFrame框架类,CMainFrame框架类将会把菜单项消息交给它的子窗口View类,由

老鼠生存现状 1412

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

C++/MFC——获得MFC窗口其它类指针的方法

获得CWinApp:  -在CMainFrame,CChildFrame,CDocument,CView中直接调用AfxGetApp()或用theApp  -在其它类中只能用AfxGetApp()获得CMainFrame:  -在CMinApp中用AfxGetMainWnd()或者m_pMainWnd  -在CChildFrame中可用GetParentFrame()  -在其它类中用AfxG

非语 2097

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

上一篇: 排序方法的比较
下一篇: 线程分离的定时器一点经验
cbNotes
博客等级 码龄14年 295粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值