AutoCAD 3DMAX C语言 Pro/E UG JAVA编程 PHP编程 Maya动画 Matlab应用 Android
Photoshop Word Excel flash VB编程 VC编程 Coreldraw SolidWorks A Designer Unity3D
 首页 > VC编程

在Visual C++中如何建立多模板文档

51自学网 2015-08-30 http://www.wanshiok.com

(2)在应用程序中增加菜单响应:
 void CWinApp::OnFileOpen()
{
  POSITION P = GetFirstDocTemplatePosition();
  CFileDialog Dlg(true);
  if(Dlg.DoModal()= =IDOK)
  {
   CString FileName = Dlg.GetPathName();
   CString FileExt = Dlg.GetFileExt();
   if((FileExt=="First")||(FileExt=="first")||(FileExt=="FIRST"))
   { 
    while(P!=NULL)
    {
    CDocTemplate* curTemplate=GetNextDocTemplate(P);
    CString str;
    curTemplate->GetDocString(str,CDocTemplate::docName);
    if(str= =_T("First"))
    {
    curTemplate->OpenDocumentFile(FileName);
    return;
   }
  }
 }
 else if((FileExt = = "Second") || (FileExt = = "second")||(FileExt= =SECOND"))
{
  while(P!=NULL)
   {
   CDocTemplate* curTemplate=GetNextDocTemplate(P);
   CString str;
   curTemplate->GetDocString(str,CDocTemplate::docName);
   if(str==_T("Second"))
   {
   curTemplate->OpenDocumentFile(FileName);
   return;
   }
  }
 }else
 {
  // may not be supported
  AfxMessageBox("你所选的文件类型本程序不支持!");
  return;
  }
 }
}
  这里把文件名的后缀作为分支条件,如果是First类文件,则先获得关于First类文件的文档模板,然后调用CDocTemplate::OpenDocumentFile (lpszFileName)函数打开此文档。此函数将依次生成新文档,新框架,并在框架中创建视,最后向框架中所有的视发送初始化消息,使其显示在屏幕上。如果是Second类文件,操作类似。

  当然,我们还可以在程序的任何位置实现此操作:通过全局函数AfxGetApp 获得应用程序对象指针,从而获得相应的文档模板指针。

 
 
说明
:本教程来源互联网或网友上传或出版商,仅为学习研究或媒体推广,wanshiok.com不保证资料的完整性。

上一篇:谈谈MFC中的消息映射  下一篇:枚举NT services