• 全部
  • VC综合技术
  • 互联网技术
  • MFC AppLauncher
  • .NET 技术
  • 界面
  • 进程
  • 算法
  • 硬件/系统
  • 数据库
  • VC++技术资源

有趣的问题,高手请进

a_kun 2001-09-23 07:04:17
我建了一个多文档的程序,它处理两种文件,因此具有两种doc/view,两种文件可以相互转换。当我把第一种文件转换成第二种文件时,我想立即打开一个第二种文件对应的窗口以便编辑。我该怎么办?

up有分,不够另外开帖子给分!!!
...全文
131 点赞 收藏 14
写回复
14 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Hover 2001-09-24
这个可以用单文档多视实现,文档应更灵活一些。
回复
whit_sindows 2001-09-24
补充:
我将工程的名称起名为MDoc.
extern CMyApp theApp;应为extern CMDocApp theApp;此句不是粘过来的,其余是。
回复
whit_sindows 2001-09-24
我是这样做的
1:在CWinApp的派生类中加入一个数据成员和一个函数:

public:
CMultiDocTemplate* GetDocTemplate(void) const { return pDocTemp;}
private:
CMultiDocTemplate* pDocTemp;
2.在CWinApp的派生类的InitInstance()中记住所加的CMultiDocTemplate*:
CMultiDocTemplate* pDocTemplate;
pDocTemplate = new CMultiDocTemplate(
IDR_MDOCTYPE,
RUNTIME_CLASS(CMDocDoc),
RUNTIME_CLASS(CChildFrame), // custom MDI child frame
RUNTIME_CLASS(CMDocView));
AddDocTemplate(pDocTemplate);

pDocTemp = pDocTemplate; // 此句是加入的语句;
3.在所要打开文件的地方:
extern CMyApp theApp;

theApp.GetDocTemplate()->OpenDocumentFile(dlg.GetFileName());

回复
voidman 2001-09-24
文档/视模板用CWinApp::AddDocTemplate函数之后就保存在CWinApp的一个链表里,可以用CWinApp::GetFirstDocTemplatePosition和CWinApp::GetNextDocTemplate来取的每一个模板的指针,每一个模板绑定了一资源号,绑定的资源可以是菜单,图标,快捷键和字符资源。其中字符资源可以有以下几种
CDocTemplate::windowTitle,
CDocTemplate::docName,
CDocTemplate::fileNewName,
CDocTemplate::filterName
CDocTemplate::filterExt
CDocTemplate::regFileTypeId
CDocTemplate::regFileTypeName
它们中间用\n格开,一般用CDocTemplate::filterName来区分不同的模板,当然也可以用别的,比如指定你的字符资源IDR_???是"\n\n\n???\n\n\n\n"(就写了CDocTemplate::filterName),然后可以用CDocTemplate::GetDocString来或的相应的字符,从而判断是不是需要打开的模板,打开一个模板实例用CDocTemplate::OpenDocumentFile(lpszFile),如果不关联文件lpszFile就是NULL
如果一个系统里同时有很多个模板,建议在第一个模板实例建立时才生成模板,可以节约资源,以下是代码例子
打开一个文档实例
CDocTemplate*pDocTemp;
POSITION p=AfxGetApp()->GetFirstDocTemplatePosition();
CString text;
BOOL HasFound=FALSE;
while(p!=NULL)
{
pDocTemp=AfxGetApp()->GetNextDocTemplate(p);
pDocTemp->GetDocString(text,CDocTemplate::filterName);
if(text==DOCFILTERNAME)//DOCFILTERNAME是一个宏,在头上定义,和
//你的字符资源里的字符串中的???保持一致
{
HasFound=TRUE;
break;
}
}//如果是没有找到就新开一个模板
if(!HasFound)
{
CMultiDocTemplate* pDocTemplate;
pDocTemplate = new CMultiDocTemplate(
IDR_???,
RUNTIME_CLASS(C???Doc),
RUNTIME_CLASS(C???Wnd),
RUNTIME_CLASS(C???View));
AfxGetApp()->AddDocTemplate(pDocTemplate);
pDocTemp=pDocTemplate;
}
pDocTemp->OpenDocumentFile(NULL);//这里没有关联文件
回复
a_kun 2001-09-23
to all:
<<深入浅出MFC>> 早看完n长时间了,里面没有怎么操作的。
回复
xuyongg 2001-09-23
OpenDocument()
回复
puppet 2001-09-23
看一看<<MFC深入浅出>>
回复
feelinn 2001-09-23
有必要如此复杂吗?
如果实在要的话,就在转换完时更换一个模板.
回复
a_kun 2001-09-23
没有人帮忙吗?
回复
lpf 2001-09-23
gz
回复
ray2_ls 2001-09-23
gz
回复
a_kun 2001-09-23
OnFileOpen被截获后连文件都打不开了,我不知道后面隐藏地出现了什么参数。
回复
xj_h 2001-09-23
自己调OnFileOpen不可以啊?
回复
bobofu 2001-09-23
关注
回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2001-09-23 07:04
社区公告

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