想作一个MFC中获得各个类的句柄的总结:A1.如何在自己的类中获得“应用程序类”(App)的句柄?
A2.如何在“文档类”(Doc)中获得“应用程序类”句柄?
A3.如何在“框架类”(Frame)中获得“应用程序类”句柄?
A4.如何在“视图类”(View)中获得“应用程序类”句柄?B1.如何在自己的类中获得“文档类”的句柄?
B2.如何在“应用程序类”中获得“文档类”句柄?
B3.如何在“框架类”中获得“文档类”句柄?
B4.如何在“视图类”中获得“文档类”句柄?(GetDocument)C1.如何在“视图类”中获得“视图类”句柄?(GetView)
C2.如何在自己的类中获得“视图类”句柄?
C3.如何在“应用程序类”中获得“视图”句柄?D.其他情况(大家自己提提看)
A2.如何在“文档类”(Doc)中获得“应用程序类”句柄?
A3.如何在“框架类”(Frame)中获得“应用程序类”句柄?
A4.如何在“视图类”(View)中获得“应用程序类”句柄?B1.如何在自己的类中获得“文档类”的句柄?
B2.如何在“应用程序类”中获得“文档类”句柄?
B3.如何在“框架类”中获得“文档类”句柄?
B4.如何在“视图类”中获得“文档类”句柄?(GetDocument)C1.如何在“视图类”中获得“视图类”句柄?(GetView)
C2.如何在自己的类中获得“视图类”句柄?
C3.如何在“应用程序类”中获得“视图”句柄?D.其他情况(大家自己提提看)
解决方案 »
- 请问下全局钩子能不能在静态库中使用?
- ADO数据库异常捕获与处理问题
- 关掉了窗口界面,任务管理器中程序仍在运行,怎么回事?
- string "123456"转换为0x12,0x34,0x56怎么做?
- 请问
- 求TTS SDK 4.0中的一个例子程序:TTSApp(就要sapi4.0的!!!)
- 这样的错误,你遇到过吗?
- c++基础代码,工程间共用的问题
- 实达铭泰怎么?有人了解吗?
- 送分题:vc中若一行太长,应该怎样来换行?
- 怎样将GetItemData()获得的指针转换成结构变量指针?
- CListView问题 如何得到选择项目的图像引索 完整使用CListView的例子 谢谢!!!!!!!!!!!!
GetActiveView()->...
AfxGetApp 得到指针
B1 B2 SDI AfxGetMainWnd() -> GetActiveView() -> GetDocument() 得到指针
MDI AfxGetMainWnd() -> MDIGetActive() -> GetActiveView() -> GetDocument() 得到指针
B3 SDI GetActiveView() -> GetDocument() 得到指针
MDI MDIGetActive() -> GetActiveView() -> GetDocument() 从 CMainFrame 得到指针
GetActiveView() -> GetDocument() 从 CChildFrame 得到指针
B4 GetDocument
C1 this
C2 C3 SDI GetActiveView 得到指针
MDI MDIGetActive() -> GetActiveView() 从 CMainFrame 得到指针
GetActiveView 从 CChildFrame 得到指针
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);
CToolBar * pToolBar=(CtoolBar *)AfxGetMainWnd()->GetDescendantWindow(AFX_IDW_TOOLBAR); 7) 如果框架中加入工具栏和状态栏变量还可以这样 (CMainFrame *)GetParent()->m_wndToolBar;
(CMainFrame *)GetParent()->m_wndStatusBar; 8) 在Mainframe获得菜单指针 CMenu *pMenu=m_pMainWnd->GetMenu();
9) 在任何类中获得应用程序类
用MFC全局函数AfxGetApp()获得。
下面的变量或者函数的意义m_pMainWnd ; AfxGetApp();AfxGetMainWnd();
写错了,应该是:
C1.如何在“文档类”中获得“视图类”句柄?(GetView)
还有没有补充的呀?补充的也给分,嘿嘿。
调用 GetFirstViewPosition 和 GetNextView 函数得到指针。
在App类中:
CMyView *pView = (CMyView *) m_pMainWnd->GetActiveView();
没法得到程序的view,说是GetActiveView()不是CWnd的成员函数。(VS2003)另CMainFrame一般就是一个CWnd吧?
AfxGetApp 得到指针
B1 B2 SDI ((CMainFrame*)AfxGetMainWnd()) -> GetActiveView() -> GetDocument() 得到指针
MDI ((CMainFrame*)AfxGetMainWnd()) -> MDIGetActive() -> GetActiveView() -> GetDocument() 得到指针
B3 SDI GetActiveView() -> GetDocument() 得到指针
MDI MDIGetActive() -> GetActiveView() -> GetDocument() 从 CMainFrame 得到指针
GetActiveView() -> GetDocument() 从 CChildFrame 得到指针
B4 GetDocument
C1 GetFirstViewPosition 和 GetNextView
C2 C3 SDI GetActiveView 得到指针
MDI MDIGetActive() -> GetActiveView() 从 CMainFrame 得到指针
GetActiveView 从 CChildFrame 得到指针
MDI ((CMainFrame*)AfxGetMainWnd()) -> MDIGetActive() -> GetActiveView() 得到指针
如:
AfxGetApp();//得到的是WinApp类的句柄,
所以操作前记得转换成自己定义的类的句柄。
如:
((CMyApp*)AfxGetApp())->XXXX();//这的xxxx()就是你定义的类中间的成员。说的对吗?