请问:怎样同时打开多个文档?(急)

shaohua 2000-02-22 01:08:00
我想采用多文档MDI,同时操作多个文档,请问如何打开处理?谢谢。
...全文
289 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
softdoctor 2000-02-23
  • 打赏
  • 举报
回复
为不同种类的文档建立文档模板
在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);
}
shaohua 2000-02-23
  • 打赏
  • 举报
回复
非常的对不起,也许是我没有表达清楚我的问题,我的问题如下:

我想做一个小软件,软件应该可以Word一样同时打开多个不同的文档,(不一定就是文档,比方说同时打开几个图片, 最好这几个图片的格式并不一样,程序可以提供如:*.bmp, *.gif, *.psd等等. 软件打开后,可以象Word 一样分别处理各个图片文件.

急切盼望您的答复,如果有源代码,我将更是尤为感谢.
cloud 2000-02-22
  • 打赏
  • 举报
回复
讲起来很多。推荐你看一本书:
《VC++4。0开发使用指南》(机械工业出版社)
Fancy 2000-02-22
  • 打赏
  • 举报
回复
我覺得你的問題太簡單了, 所以我怀我理解錯了, 請說得更詳細一點(SDK or MFC)?
ad 2000-02-22
  • 打赏
  • 举报
回复
一个一个打开不就得了。如果这些文档内容和显示方式不一样,则要建立多个文档模板。VC只为你建立了一个,其它的自己模仿着建。
softdoctor 2000-02-22
  • 打赏
  • 举报
回复
操作多文档关键要理解多文档的层次结构。
多文档应用建立起来之后,MFC 中存在一个文档模板的列表在 CWinApp 中,
通过此列表可获得各个文档模板(CDocTemplate),对于每一个模板可拥有多个实例文档(CDocument).理解这几层结构就不难操作多文档了。
可供参考的函数:
CWinApp::AddDocTemplate
CWinApp::OpenDocumentFile
CWinApp::GetFirstDocTemplatePosition
CWinApp::GetNextDocTemplate
CDocTemplate::GetDocString
CDocTemplate::MatchDocType
CDocTemplate::GetFirstDocPosition
CDocTemplate::GetNextDoc
CDocument::GetFirstViewPosition
CDocument::GetNextView
CView::GetParentFrame
CDocTemplate::OpenDocumentFile

16,470

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧