1、获取应用程序指针

  CMyApp* pApp=(CMyApp*)AfxGetApp();

  2、获取主框架指针

  CWinApp 中的公有成员变量 m_pMainWnd 就是主框架的指针

  CMainFrame* pMainFrame = (CMainFrame*)(AfxGetApp()->m_pMainWnd);

  或者

  CMainFrame* pMainFrame = (CMainFrame*)AfxGetMainWnd();

  3、获取菜单指针

  CMenu* pMenu = AfxGetMainWnd()->GetMenu();

  4、获取工具栏、状态栏指针

  主框架中可以直接使用m_wndToolBar、m_wndStatusBar

  其他:

  CToolBar* pToolBar = (CToolBar*)AfxGetMainWnd()->GetDescendantWindow(AFX_IDW_TOOLBAR);

  CStatusBar* pStatusBar = (CStatusBar*)AfxGetMainWnd()->GetDescendantWindow(AFX_IDW_STATUS_BAR);

  5、获取控件指针

  先用 GetDlgItem() 再转换,如:

  CButton* pButton = (CButton*)GetDlgItem(IDC_MYBUTTON);

  6、获取文档、视图指针

  SDI:

  CMainFrame* pMainFrame = (CMainFrame*)AfxGetMainWnd();

  CYourDoc* pDoc = (CYourDoc*)pMainFrame->GetActiveDocument();

  CYourView* pView = (CYourView*)pMainFrame->GetActiveView();

  MDI:

  CMainFrame* pMainFrame = (CMainFrame*)AfxGetMainWnd();

  CChildFrame* pChildFrame = (CChildFrame*)pMainFrame->GetActiveFrame();

  CYourDoc* pDoc = (CYourDoc*)pChildFrame->GetActiveDocument();

  CYourView* pView = (CYourView*)pChildFrame->GetActiveView();

  7、文档、视图

  从视图获取文档指针:

  CYourDoc* pDoc = GetDocument();

  从文档获取视图指针:

  利用成员函数 GetFirstViewPosition() 和 GetNextView() 遍历

  virtual POSITION GetFirstViewPosition() const;

  virtual CView* GetNextView(POSITION& rPosition) const;

  SDI:

  CYourView* pView;

  POSITION pos = GetFirstViewPosition();

  pView = GetNextView(pos);

  MDI:

  定义函数

  CView* CYourDoc::GetView(CRuntimeClass* pClass)

  {

  CView* pView;

  POSITION pos=GetFirstViewPosition();

  while(pos!=NULL)

  {

  pView=GetNextView(pos);

  if(!pView->IsKindOf(pClass))

  break;

  }

  if(!pView->IsKindOf(pClass))

  {

  AfxMessageBox("Connt Locate the View.");

  return NULL;

  }

  return pView;

  }

  使用如下:

  CYourView* pView=(CYourView*)GetView(RUNTIME_CLASS(CYourView));

8、文档模版、文档

  从文档获取文档模版指针:

  CDocTemplate* GetDocTemplate() const;

  从文档模版获取文档指针:

  viaual POSITION GetFirstDocPosition( ) const = 0;

  visual CDocument* GetNextDoc(POSITION & rPos) const = 0;

  9、获取分割视图中各个视图的指针

  主框架中定义:CSplitterWnd m_wndSplitter;

  定义两个View类:CView1、CView2

  框架类中重载:

  BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT, CCreateContext* pContext)

  {

  VERIFY(m_splitter.CreateStatic(this,2,1)); //分割成两行一列

   VERIFY(m_splitter.CreateView(0,0,RUNTIME_CLASS(CView1),CSize(100,100),pContext));

   VERIFY(m_splitter.CreateView(1,0,RUNTIME_CLASS(CView2),CSize(100,100),pContext));

  return TRUE;

  }

  获取分割视图指针

  CView1* pView1 = (CView1*)m_wndSplitter.GetPane(0,0);

  CView2* pView2 = (CView2*)m_wndSplitter.GetPane(1,0);

  10、通过鼠标获得子窗口指针

  CWnd* ChildWindowFromPoint(POINT point) const;

  CWnd* ChildWindowFromPoint(POINT point,UINT nFlags) const;

  用于确定包含指定点的子窗口

  如果指定点在客户区之外,函数返回NULL;

  如果指定点在客户区内,但是不属于任何一个子窗口,函数返回该CWnd的指针;

  如果有多个子窗口包含指定点,则返回第一个子窗口的指针。

  还要注意的是,该函数返回的是一个伪窗口指针,不能将它保存起来供以后使用。

  对于第二个参数nFlags有几个含义:

  CWP_ALL             file://不忽略任何子窗口

  CWP_SKIPNIVSIBLE    file://忽略不可见子窗口

  CWP_SKIPDISABLED    file://忽略禁止的子窗口

  CWP_SKIPRANSPARENT file://忽略透明子窗口

  获取工具条的指针

  在缺省状态下,有一个默认的工具条AFX_IDW_TOOLBAR,我们可以根据相应的ID去获取工具条指针,方法如下:

  CToolBar* pToolBar=(CToolBar*)AfxGetMainWnd()->GetDescendantWindow(AFX_IDW_TOOLBAR);

MFC中获取指针的方法的更多相关文章

  1. MFC中获取App,MainFrame,Doc和View类等指针的方法

    From: http://hi.baidu.com/wxnxs/item/156a68f5b3b4ed18e3e3bd03   MFC中获取App,MainFrame,Doc和View类等指针的方法 ...

  2. MFC中获取各个窗口之间的句柄或者指针对象的方法

    MFC在非常多的对话框操作中,我们常常要用到在一个对话框中调用还有一个对话框的函数或变量.能够用例如以下方法来解决.    HWND hWnd=::FindWindow(NULL,_T("S ...

  3. java中获取接口(方法)中的参数名字(eclipse设置编译参数)(java8 javac -parameters)

    interface接口参数 jdk1.7及以前使用spring功能实现的: 注意: 1.该功能只能获取类的方法的参数名,不能获取接口的方法的参数名. public static void test() ...

  4. thinkphp中获取参数值的方法

    以获取$type这个参数为例:一:通过传统方法:$_GET, $_POST    $type = intval($_GET['type'])这种方法需要自己写过滤规则,保证数据安全. 二:在Actio ...

  5. VS2010 MFC中 静态编译设置方法

    问题:VS2010 c++编写的程序在别人的机子运行不了,缺少mfc100u.dll xxx100d.dll等 解决方法:1.将这些dll打包,和应用程序一起发布;2.采用MFC静态编译; 静态编译: ...

  6. Javasrcipt中从一个url或者从一个字符串中获取参数值得方法

    从url中获取参数值是che程序开发过程中的常用需求,偶然得闲,便抽空研究了一下javasrcipt下,获取参数的办法(JAVA中也类似). 首先看url的规范: URL组成:protocol :// ...

  7. Java中获取路径的方法_自我分析

    就目前的我来说最常用的两种获取路径的方法是  class.getRecource(filename) 和 class.getclassloader.getRecource(filename) 这两者的 ...

  8. java中获取路径的方法

    在class获取路径的方法,getResource有没有“\”的区别 System.out.println("" + this.getClass().getResource(&qu ...

  9. mssql sqlserver 从指定字符串中获取数字的方法

    转自:http://www.maomao365.com/?p=6410 摘要: 下文主要分享从指定字符串或列中获取数字信息,如下所示: 实验环境:sql server 2000 ----编写sql函数 ...

随机推荐

  1. Android文件选择器的实例分享

    本文给大家讲解下Android文件选择器的使用.实际上就是获取用户在SD卡中选择的文件或文件夹的路径,这很像C#中的OpenFileDialog控件. 此实例的实现过程很简单,这样可以让大家快速的熟悉 ...

  2. Android 事件监听处理

    事件监听的处理模型包括三个成员:事件源.事件以及事件监听器. 基于监听的事件处理模型一般包括几个步骤: 1.获取普通界面组件: 2.实现事件监听器类 3.将监听器对象注冊给普通组件 当事件源上发生指定 ...

  3. yii2 model源码解读

    模型yii\base\Model 模型主要实现了验证规则和验证器确保输入的数据是安全和正确的. 模型的流程: 1.从请求中读取数据.使用load或者loadMultiple或者手动赋值.load会根据 ...

  4. python 学习(一)

    python的基础看完了之后,有点像简化并提供了一定优化后的java基础,看java多了的人看python还是比较别扭的.看完别人对于java和python的对比,我只能感慨一句,还有什么是java办 ...

  5. php常见问题辨析(二)

    一:unset: 1.如果在函数中 unset() 一个全局变量,则只是局部变量被销毁,而在调用环境中的变量将保持调用 unset() 之前一样的值,如果您想在函数中 unset() 一个全局变量,可 ...

  6. 如何用eclispe远程调试tomcat--转载

    原文地址:http://jingyan.baidu.com/article/0320e2c1f4ef6b1b87507b06.html tomcat是一种非常常见的java web应用服务器,有时候服 ...

  7. Helpers\PHPMailer

    Helpers\PHPMailer PHPMailer is a third party class for sending emails, Full docs are available athtt ...

  8. Computer skills one can learn within one day

    Computer related technical skills are usually thought as complicated and difficult to understand. It ...

  9. launch failed.Binary not found in Linux/Ubuntu解决方案

    Linux下出现launch failed.Binary not found的解决方案: 首先当你把网上关于mingw的解决方案都看晕了的时候,告诉你,别看关于mingw的了.Linux下不用ming ...

  10. XGPush集成(信鸽集成)

    #import "AppDelegate.h" #import "XGPush.h" #import "XGSetting.h" #defi ...