mfc 多文档切换 响应函数

1、ON_WM_MDIACTIVATE()

2、afx_msg void OnMDIActivate(BOOL bActivate, CWnd* pActivateWnd, CWnd* pDeactivateWnd);

3、

void CChildFrame::OnMDIActivate(BOOL bActivate, CWnd* pActivateWnd, CWnd* pDeactivateWnd)
{
CMDIChildWndEx::OnMDIActivate(bActivate, pActivateWnd, pDeactivateWnd);

CDocument* pDoc = GetActiveDocument();//2个文档的指针,从一个激活的文档指针到另一个激活的文档的指针
}

 

 

//以下是获取view和document

1.CMDIFrameWnd *pFrame = (CMDIFrameWnd*)AfxGetApp()->m_pMainWnd;

2.CMDIChildWnd *pChild = (CMDIChildWnd *) pFrame->GetActiveFrame();

3.
3.1获得视类:CMyView *pView = (CMyView *) pChild->GetActiveView();
3.2获得文档类:CDocument* pDocument=pChild -> GetActiveDocument();

 

你可以通过使用MFC框架中的文档视图模型(Document-View)来实现MFC文档应用程序中的多界面切换。下面是一种常见的实现方法: 1. 首先,在你的MFC应用程序中创建多个对话框资源,每个对话框资源代表一个界面。 2. 在你的文档类(CMyDoc)中添加一个成员变量,用于保存当前显示的对话框的指针。 ```cpp CDialog* m_pCurrentDialog; ``` 3. 在你的文档类的构造函数中,初始化该成员变量为NULL。 ```cpp m_pCurrentDialog = NULL; ``` 4. 在你的文档类的OnNewDocument函数中,创建初始对话框并显示。 ```cpp BOOL CMyDoc::OnNewDocument() { if (!CDocument::OnNewDocument()) return FALSE; // 创建初始对话框 CMyDialog* pDialog = new CMyDialog; // 设置当前对话框指针 m_pCurrentDialog = pDialog; // 创建对话框窗口 pDialog->Create(IDD_MY_DIALOG, AfxGetMainWnd()); // 显示对话框 pDialog->ShowWindow(SW_SHOW); return TRUE; } ``` 5. 在你的文档类中添加一个函数,用于切换界面。在该函数中,先隐藏当前对话框,然后根据需要创建并显示新的对话框。 ```cpp void CMyDoc::SwitchDialog(int nDialogID) { // 隐藏当前对话框 m_pCurrentDialog->ShowWindow(SW_HIDE); // 销毁当前对话框 m_pCurrentDialog->DestroyWindow(); delete m_pCurrentDialog; // 根据需要创建新的对话框 if (nDialogID == IDD_DIALOG1) { m_pCurrentDialog = new CDialog1; } else if (nDialogID == IDD_DIALOG2) { m_pCurrentDialog = new CDialog2; } // 可以根据需要添加更多的对话框 // 创建对话框窗口 m_pCurrentDialog->Create(nDialogID, AfxGetMainWnd()); // 显示对话框 m_pCurrentDialog->ShowWindow(SW_SHOW); } ``` 6. 在你的视图类(CMyView)中添加一个成员变量,用于保存文档指针。 ```cpp CMyDoc* m_pDoc; ``` 7. 在你的视图类的构造函数中,将文档指针赋值给成员变量。 ```cpp CMyView::CMyView() { m_pDoc = GetDocument(); } ``` 8. 在你的视图类中添加一个消息处理函数,用于响应界面切换的消息。 ```cpp void CMyView::OnSwitchDialog() { // 调用文档类的切换界面函数 m_pDoc->SwitchDialog(IDD_NEW_DIALOG); } ``` 9. 在你的菜单资源中添加一个菜单项,并将它与界面切换的消息关联起来。 ```cpp ON_COMMAND(ID_SWITCH_DIALOG, &CMyView::OnSwitchDialog) ``` 这样,当你点击菜单项时,就会调用文档类的切换界面函数,实现多界面切换效果。你可以根据需要在文档类中添加更多的界面切换函数,并在视图类中添加相应的消息处理函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

woquNOKIA

谢谢老板!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值