CMultiDocTemplate* pUniteDocTemplate; //新增加的
pUniteDocTemplate = new CMultiDocTemplate(
IDR_UNITETYPE,
RUNTIME_CLASS(CUniteDoc),
RUNTIME_CLASS(CMDIChildWnd), // custom MDI child frame
RUNTIME_CLASS(CUniteView));
AddDocTemplate(pUniteDocTemplate); CMultiDocTemplate* pDocTemplate; //原有的
pDocTemplate = new CMultiDocTemplate(
IDR_HITYPE,
RUNTIME_CLASS(CHiDoc),
RUNTIME_CLASS(CChildFrame), // custom MDI child frame
RUNTIME_CLASS(CHiView));
AddDocTemplate(pDocTemplate);在切换文档时,是用标签方式切换的,当在选择不同类型的文档时出问题!
void CWindowTabCtrl::OnLButtonDblClk(UINT nFlags, CPoint point) //标签方切换函数
{
CMDIChildWnd* pChild=(CMDIChildWnd*)GetActiveFrame();
//请问在这里怎样分辨出是(CHiDoc)文档和(CUniteDoc)文档,从而得到该激活文档的指针?
CHiDoc * pDoc=(CHiDoc *)pChild->GetActiveDocument();
}
CMDIChildWnd* pChild=(CMDIChildWnd*)GetActiveFrame();
//请问在这里怎样分辨出是(CHiDoc)文档和(CUniteDoc)文档,从而得到该激活文档的指针?
CDoc * pDoc=pChild->GetActiveDocument();
怎样分辨pDoc是什么类型的指针??
#include "stdafx.h"
#include <iostream>
using namespace std;class Base
{
public:
virtual ~Base()
{
}
};
class D1:public Base
{
};
class D2:public Base
{
};
int main()
{ D1 *pD1 = new D1;
D2 *pD2 = new D2; Base* p=pD2; if( NULL != dynamic_cast<D1*>(p) )
cout<<"p实际指向D1类型"<<endl;
else if( NULL != dynamic_cast<D2*>(p) ) cout<<"p实际指向D2类型"<<endl;
else
cout<<"p指向未知类型"<<endl; return 0;
}
CDocument * pDoc=GetActiveDocument(); CRuntimeClass* prt = pDoc->GetRuntimeClass();
if( strcmp( prt->m_lpszClassName, "CMy123Doc" ) == 0 )
AfxMessageBox("prt指向CMy123Doc对象");
CDocument * pDoc=GetActiveDocument();
if(pDoc->IsKindIF(RUNTIME_CLASS(HiDoc))
{
HiDoc* pHiDoc=(HiDoc*)pDoc;
}