获取MFC主框架

4 篇文章 0 订阅
 在MainFrm里面定义的是主框架的东西,也就是一启动就会运行的,所以在后面要加东西的话得获得一开始定义的框架
CMainFrame* pFrame = (CMainFrame*)AfxGetApp()->m_pMainWnd;
pFrame->m_wndFileView.FillFileView();
MFC一个程序只会有一个从头到尾的指针,比如在Profolio.h定义的指针,会保留到程序结束,所以可以作为存储数据的文件指针,访问的时候通过:
CPortfolioApp * pPortfolioApp=(CPortfolioApp*) AfxGetApp();
m_pDataModel=pPortfolioApp->m_pDataModel;


 1 // App中获取其它三项指针
 2 void CSDIApp::OnApp()
 3 {
 4     // App
 5     // Doc
 6     CDocument *pDoc = ((CFrameWndEx *)m_pMainWnd)->GetActiveDocument();//成员变量CFrameWndEx m_pMainWnd
 7     // MainFrame
 8     CFrameWndEx *pMain = (CFrameWndEx *)AfxGetMainWnd();
 9     // View
10     CView *pView = ((CFrameWndEx *)m_pMainWnd)->GetActiveView();
11 }
12 
13 // Doc中获取其它三项指针
14 CSDIDoc::CSDIDoc()//构造函数
15 {
16     // App
17     CWinAppEx *pApp = (CWinAppEx *)AfxGetApp();
18     // Doc
19     // MainFrame
20     // Doc的创建先于MainFrame
21     // View
22     // Doc的创建先于View
23 }
24 void CSDIDoc::OnDoc()
25 {
26     // App
27     // 同构造函数
28     // Doc
29     // MainFrame
30     CFrameWndEx *pMain = (CFrameWndEx *)AfxGetMainWnd();
31     // View
32     CView *pView= (CView *)pMain->GetActiveView();     
33     POSITION pos = GetFirstViewPosition();       
34     pView = GetNextView(pos); 
35 }
36     
37 // MainFrame中获取其它三项指针
38 CMainFrame::CMainFrame()//构造函数
39 {
40     theApp.m_nAppLook = theApp.GetInt(_T("ApplicationLook"), ID_VIEW_APPLOOK_VS_2005);
41     // App
42     CWinAppEx *pApp = (CWinAppEx *)AfxGetApp();
43     // Doc
44     // 构造函数里无法得到当前激活的Doc
45     // MainFrame
46     // View
47     // 构造函数里无法得到View指针,因为Main先于View创建。
48 }
49 void CMainFrame::OnMain()
50 {
51     // App
52     // 同构造函数
53     // Doc
54     CDocument *pDoc = (CDocument *)GetActiveDocument();
55     // MainFrame
56     // View
57     CView *pView = (CView *)GetActiveView();
58 }
59 
60 // View中获取其它三项指针
61 CSDIView::CSDIView()//构造函数
62 {
63     // App
64     CWinAppEx *pApp = (CWinAppEx *)AfxGetApp();
65     // Doc
66     /* 无法在View的构造函数里得到Doc指针
67        GetDocument();实际上是返回m_pDocument
68        m_pDocument在OnCreate();里创建        */
69     //CDocument *pDoc = GetDocument();
70     // MainFrame
71     // 构造函数里无法得到MainFrame指针
72     // CFrameWndEx *pMain = (CFrameWndEx *)pApp->m_pMainWnd;
73     // View
74 }
75 void CSDIView::OnView()
76 {
77     // App
78     // 同构造函数
79     // Doc
80     CDocument *pDoc = GetDocument();
81     // MainFrame
82     CFrameWndEx *pMain = (CFrameWndEx *)AfxGetMainWnd();
83     // View
84 }
85 
86 // Dlg中获取指针
87 CDlg::CDlg(CWnd* pParent /*=NULL*/)//构造函数
88     : CDialog(CDlg::IDD, pParent)
89 {
90     // App
91     CWinAppEx *pApp = (CWinAppEx *)AfxGetApp();
92     // Doc
93     CDocument *pDoc = ((CFrameWndEx *)AfxGetMainWnd())->GetActiveDocument();
94     // MainFrame
95     CFrameWndEx *pMain = (CFrameWndEx *)AfxGetMainWnd();
96     // View
97     CView *pView = ((CFrameWndEx *)AfxGetMainWnd())->GetActiveView();
98 }
参考网址 :<https://www.cnblogs.com/luzhiyuan/p/3936283.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值