MFC如何使同一个视图显示两个一样的文档
时间: 2024-03-06 15:49:13 浏览: 26
在MFC中,如果要在同一个视图中显示两个一样的文档,可以按照以下步骤操作:
1. 在文档类中添加一个成员变量,用于保存第二个文档对象指针:
```cpp
class CMyDoc : public CDocument
{
public:
// ...
CMyDoc* m_pOtherDoc;
};
```
2. 在文档类的构造函数中将第二个文档对象指针初始化为NULL:
```cpp
CMyDoc::CMyDoc()
{
// ...
m_pOtherDoc = NULL;
}
```
3. 在文档类中添加一个函数,用于设置第二个文档对象指针:
```cpp
void CMyDoc::SetOtherDoc(CMyDoc* pOtherDoc)
{
m_pOtherDoc = pOtherDoc;
}
```
4. 在视图类的OnInitialUpdate函数中,将第二个文档对象指针指向当前文档对象:
```cpp
void CMyView::OnInitialUpdate()
{
CView::OnInitialUpdate();
// ...
GetDocument()->SetOtherDoc(GetDocument());
}
```
5. 在视图类中重写OnUpdate函数,以便在第二个文档对象更新时也更新视图:
```cpp
void CMyView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint)
{
CView::OnUpdate(pSender, lHint, pHint);
// ...
CMyDoc* pDoc = GetDocument();
if (pSender != this && pDoc == pDoc->m_pOtherDoc)
{
Invalidate();
}
}
```
6. 在文档类中重写OnOpenDocument函数,在打开第二个文档时将第二个文档对象指针指向当前文档对象:
```cpp
BOOL CMyDoc::OnOpenDocument(LPCTSTR lpszPathName)
{
if (!CDocument::OnOpenDocument(lpszPathName))
return FALSE;
// ...
if (m_pOtherDoc == NULL)
{
m_pOtherDoc = this;
}
return TRUE;
}
```
完成以上步骤后,就可以在同一个视图中显示两个一样的文档了。在打开第二个文档时,需要注意将第二个文档对象指针指向当前文档对象,否则会出现错误。同时,在更新视图时,要判断是哪个文档对象更新了,以避免出现重复更新的情况。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)