



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
获得父窗口指针:获得MFC窗口其它类指针的方法(2009-05-13 18:48:43) 转载标签: it分类:VC-在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 * pCu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年秋新北师大版数学一年级上册教学课件 第四单元 10以内数加与减 第12课时 做个减法表
- 跨境电子商务双语教程 习题和答案Chapter 7
- 水课件模板教学课件
- 输电线路线缆接头技术方案
- 建筑工程混凝土浇筑施工方案
- 智算中心实时数据流处理与分析
- 失智老年照护上海城建职业82课件
- 糖尿病病人的健康指导社区护理学86课件
- 隧道检测与维护技术方案
- 水的篆书课件模板
- 2025年全国工会系统经审业务技能大赛知识总题库(1800题)-中部分
- 心脏骤停的急救及处理
- 红十字急救包扎技术培训课件
- 中医辨证施护课件
- 狂犬处置门诊管理制度
- T/CAQI 18-2016婴幼儿室内空气质量分级
- 纳米复合高分子膜材料企业制定与实施新质生产力项目商业计划书
- 能效管理合同协议书模板
- 禁毒社工考试试题及答案
- 2025既有办公建筑体检评价标准
- 煤矿其他从业人员培训课件
评论
0/150
提交评论