为不同种类的文档建立文档模板

转载地址:http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece763104687270e54f7327d818c027fa3cf1fd5791d1c053db2fa3a211b02d0d1393a41f9460dbcad6734605c62e9c88edf5ddccb85295c9f2644671df55613a346fc8d177f977dc11ca2ed4e&p=8a3ec54ad6c345f042be9b7c5c0a97&newp=937ad45e86cc41af5ca6c7710f00cc231610db2151d7db1134&user=baidu&fm=sc&query=CDocTemplate%3A%3AMatchDocType&qid=&p1=3
 在OnInitInstance()中加入文档模板
 AddDocTemplate(pYoutemplate)
 重载CWinApp::OpenDocumentFile(LPCSTSRT lpszFileName)
 代码如下

CString str=lpszFileName;
CString strFileName=lpszFileName;
str.MakeUpper();
CString strExt=str.Mid(str.GetLength()-3,3);
POSITION temppos=GetFirstDocTemplatePosition();
CString strTemp;
strExt="."+strExt;
CDocTemplate * pDocTemplateTmp=NULL;
CDocument * pOpenDocument;
BOOL bOpen=FALSE;
while(temppos!=NULL)
{
	CDocTemplate *pDocTemplate=GetNextDocTemplate(temppos);
	pDocTemplate->GetDocString(strTemp,CDocTemplate::filterExt);
	strTemp.MakeUpper();
	if(strTemp.CompareNoCase(".VTC")==0)
		pDocTemplateTmp=pDocTemplate;
	if(strExt==strTemp)
	{
		if(pDocTemplate->MatchDocType(lpszFileName, pOpenDocument)==CDocTemplate::yesAlreadyOpen)
		{
			POSITION pos = pOpenDocument->GetFirstViewPosition();
			if (pos != NULL)
			{
				CView* pView = pOpenDocument->GetNextView(pos); // get first one
				ASSERT_VALID(pView);
				CFrameWnd* pFrame = pView->GetParentFrame();
				if (pFrame != NULL)
					pFrame->ActivateFrame();
				else
					TRACE0("Error: Can not find a frame for document to activate.\n");
				CFrameWnd* pAppFrame;
				if (pFrame != (pAppFrame = (CFrameWnd*)AfxGetApp()->m_pMainWnd))
				{
					ASSERT_KINDOF(CFrameWnd, pAppFrame);
					pAppFrame->ActivateFrame();
				}
			}
			else
			{
				TRACE0("Error: Can not find a view for document to activate.\n");
			}
			return pOpenDocument;
		}
		else
			return pDocTemplate->OpenDocumentFile(strFileName);
	}
}

if(pDocTemplateTmp!=NULL)
{
	if(pDocTemplateTmp->MatchDocType(lpszFileName, pOpenDocument)==CDocTemplate::yesAlreadyOpen)
	{
		POSITION pos = pOpenDocument->GetFirstViewPosition();
		if (pos != NULL)
		{
			CView* pView = pOpenDocument->GetNextView(pos); // get first one
			ASSERT_VALID(pView);
			CFrameWnd* pFrame = pView->GetParentFrame();
			if (pFrame != NULL)
				pFrame->ActivateFrame();
			else
				TRACE0("Error: Can not find a frame for document to activate.\n");
			CFrameWnd* pAppFrame;
			if (pFrame != (pAppFrame = (CFrameWnd*)AfxGetApp()->m_pMainWnd))
			{
				ASSERT_KINDOF(CFrameWnd, pAppFrame);
				pAppFrame->ActivateFrame();
			}
		}
		else
		{
			TRACE0("Error: Can not find a view for document to activate.\n");
		}
		return pOpenDocument;
	}
	else
		return pDocTemplateTmp->OpenDocumentFile(strFileName);
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值