vc中如何在view类中用CMainFrame*
时间: 2024-03-16 09:44:28 浏览: 128
在 VC 中,可以通过以下步骤在 view 类中使用 `CMainFrame` 类型的指针:
1. 在 view.h 文件中包含 CMainFrame.h 文件。
2. 在 view 类中添加一个成员变量,类型为 `CMainFrame*`。
```
#include "CMainFrame.h"
class CMyView : public CView
{
public:
// ...
CMainFrame* m_pMainFrame;
};
```
3. 在 view 类的构造函数中,给成员变量 `m_pMainFrame` 赋值。
```
CMyView::CMyView()
{
// ...
m_pMainFrame = (CMainFrame*)AfxGetMainWnd();
}
```
这里使用 `AfxGetMainWnd()` 函数获取主窗口的指针,并将其转换为 `CMainFrame*` 类型。
现在,你就可以在 view 类中使用 `m_pMainFrame` 指针调用主窗口中的成员函数或变量了。
相关问题
CDemoView* CDemoApp::GetCurrentView() // // This global function is used to get a pointer to the active view // object. { CMainFrame* pFrame = (CMainFrame*) m_pMainWnd; CMDIChildWnd* pChildWnd = pFrame->MDIGetActive(); if (pChildWnd == NULL){ return NULL; } CDemoView* pView = (CDemoView*)(pChildWnd->GetActiveView()); return pView; }
这段代码是一个全局函数 `CDemoView* CDemoApp::GetCurrentView()`,用于获取当前活动视图(view)对象的指针。
1. 首先,将应用程序的主窗口指针 `m_pMainWnd` 转换为 `CMainFrame*` 类型的指针 `pFrame`。
2. 然后,通过调用 `pFrame->MDIGetActive()` 获取当前活动的 MDI 子窗口指针 `pChildWnd`。
3. 如果 `pChildWnd` 为空,表示当前没有活动的子窗口,直接返回 `NULL`。
4. 否则,通过调用 `pChildWnd->GetActiveView()` 获取当前活动子窗口的活动视图指针,并将其转换为 `CDemoView*` 类型的指针 `pView`。
5. 最后,返回 `pView`,即当前活动视图的指针。
这个函数可以在应用程序中获取当前活动视图对象的指针,以便进行相关操作或访问视图的成员函数和成员变量。
MFC的CMainFrame类作用
MFC的CMainFrame类是一个框架窗口类,通常用于实现带有工具栏、菜单栏和状态栏的应用程序主窗口。它是CFrameWnd类的子类,继承了一些窗口框架的基本功能,并添加了一些额外的功能,如:
1. 创建和管理应用程序的主菜单和子菜单。
2. 创建和管理应用程序的工具栏。
3. 创建和管理应用程序的状态栏。
4. 处理主窗口的消息,如WM_CREATE、WM_COMMAND、WM_SIZE等。
5. 控制应用程序主窗口的外观和行为,如窗口标题和图标、窗口位置和大小、最大化和最小化等。
总之,CMainFrame类是MFC应用程序中最重要的类之一,它承担了管理应用程序主窗口的大部分功能。
阅读全文