《深入浅出》 问题7 隆重出炉, 快来呀

ren20 2001-02-21 11:43:00
这回的问题比较简单,在第7章“MFC骨干程序” 中的“Document Template的意义”一节
(第320页)。下面的程序中:
书中摘录:
“如果程序支持不同的数据格式(例如一为TEXT,一为BITMAP),那么就需要不同的Document Template:

BOOL CMyWinApp::InItInstance()
{
...
CMultiDocTemplate* pDocTemplate;

pDocTemplate=new CMultiDocTemplate()(
IDR TEXTTYPE,
RUNTIME CLASS(CTextDoc),
RUNTIME CLASS(CChildFrame),
RUNTIME CLASS(CTextView));
AddDocTemplate(pDocTemplate);

pDocTemplate=new CMultiDocTemplate()(
IDR BMPTYPE,
RUNTIME CLASS(CTextDoc),
RUNTIME CLASS(CChildFrame),
RUNTIME CLASS(CBmpView));
AddDocTemplate(pDocTemplate);
...
}



为什么创建2个Document Template 还用一个pDocTemplate指针,不会出问题吗?
重新声明一个可以吗?(如下)
第二个为:

CMultiDocTemplate* pBMP;
pBMP=new CMultiDocTemplate()(
IDR BMPTYPE,
RUNTIME CLASS(CTextDoc),
RUNTIME CLASS(CChildFrame),
RUNTIME CLASS(CBmpView));
AddDocTemplate(pBMP);

一个pDocTemplate,一个pBMP。



...全文
196 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
bugn 2001-02-22
  • 打赏
  • 举报
回复
要注意的是在你的程序里一般是不会直接使用到CDocTemplate(CSingle, CMulti)的
ren20 2001-02-22
  • 打赏
  • 举报
回复
我觉得这2个模版要一直用,所以应用2个全局变量,或static 常量保存其指针。

???
bugn 2001-02-22
  • 打赏
  • 举报
回复
用GetFirstDocTemplatePosition和GetNextDocTemplate可以枚举所有的了,本来pDocTemplate就是局部变量,没有记录到任何信息的。
freeclick 2001-02-22
  • 打赏
  • 举报
回复
这是由MFC框架自己管理的,而且确实是以链表方式管理的。
wang1st 2001-02-22
  • 打赏
  • 举报
回复
你可以这样想
在CWinAPP中有一个CPtrList m_pDocTemplateList;

AddDocTemplate是这样的函数:
void AddDocTemplate(CMultiDocTemplate* pDocTemplate){
m_templateList.AddTail(pDocTemplate);
}

其实是CWinApp中有一个CDocManager m_pDocManager
而CDocManager中有一个类似的链表。
ren20 2001-02-21
  • 打赏
  • 举报
回复
只用一个指针的话。
谁来记录第一个模版的指针???
ren20 2001-02-21
  • 打赏
  • 举报
回复
那这两个模版以后怎么用呢? 怎么标志他们呢?

系统怎么确认他们?
bugn 2001-02-21
  • 打赏
  • 举报
回复
重新声明一个也无所谓的
bugn 2001-02-21
  • 打赏
  • 举报
回复
当然不出问题,注意pDocTemplate是局部变量,用完了(AddDocTemplate)就扔掉了。

16,548

社区成员

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

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

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