多文档视图切换问题

kobe198702 2011-06-02 04:13:45

CMultiDocTemplate* pNewDocTemplate = new CMultiDocTemplate(
IDR_TESTERFORM_TMPL,
RUNTIME_CLASS(CNTS700Doc), // document class
RUNTIME_CLASS(CChildFrame), // frame class
RUNTIME_CLASS(CTesterForm)); // view class
AddDocTemplate(pNewDocTemplate);

我跟踪调试了下,竟然没有导入这三个类,不知道什么原因?请问各位高手。

前提一:这个工程的代码我是把以前的一个完整的工程拷贝过来的,就是重建了一个工程名,然后把程序源码一个一个拷贝过去的。
前提二:对于原来的资源文件,比如 对话框,ICON,我都是自己重新照着原来的 对话框,ICON重新手动画的,名字也是直接拷贝过来的。
前提三:原来那个工程 可以正常运行,多视图正常切换。
...全文
134 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
kobe198702 2011-06-02
  • 打赏
  • 举报
回复
坐等高手。。。。
kobe198702 2011-06-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 cheeralen 的回复:]

是不是建的工程类型不对啊
不是多文档类型?
[/Quote]

我建的是单文档类型,不过后来拷贝的时候,把所有的文件都拷贝过来了,应该不存在这个问题了吧?(我手动把它自动有的文件都添加上了)
后来我又重新建了一个 多文档类型,还是出现这个问题。
kobe198702 2011-06-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 visualeleven 的回复:]

我跟踪调试了下,竟然没有导入这三个类,不知道什么原因?请问各位高手。
-------------------------
什么叫没有导入这三个类?
[/Quote]

我跟踪调试了下,
第一步:

CMultiDocTemplate* pNewDocTemplate = new CMultiDocTemplate(
IDR_TESTERFORM_TMPL,
RUNTIME_CLASS(CNTS700Doc), // document class
RUNTIME_CLASS(CChildFrame), // frame class
RUNTIME_CLASS(CTesterForm));


第二步: 跟踪下去

CMultiDocTemplate::CMultiDocTemplate(UINT nIDResource, CRuntimeClass* pDocClass,
CRuntimeClass* pFrameClass, CRuntimeClass* pViewClass)
: CDocTemplate(nIDResource, pDocClass, pFrameClass, pViewClass)
{
ASSERT(m_docList.IsEmpty());

m_hMenuShared = NULL;
m_hAccelTable = NULL;
m_nUntitledCount = 0; // start at 1

// load resources in constructor if not statically allocated
if (!CDocManager::bStaticInit)
LoadTemplate();
}


第三步:从上面红色代码继续跟踪

void CMultiDocTemplate::LoadTemplate()
{
CDocTemplate::LoadTemplate();
。。。
。。。
}

第四步:继续跟踪

void CDocTemplate::LoadTemplate()
{
if (m_strDocStrings.IsEmpty() && !m_strDocStrings.LoadString(m_nIDResource))
{
TRACE1("Warning: no document names in string for template #%d.\n",
m_nIDResource);
}
。。。。。。。。。
}

对于第四步的红色部分,m_strDocStrings 是空的,没有值。
退出之后,其实我写了一段测试代码,发现导入是失败的。
测试代码如下:

CString strTypeName;
CDocTemplate *pTemplate = NULL;
POSITION pos = m_pDocManager->GetFirstDocTemplatePosition();
while (NULL != pos)
{
pTemplate = m_pDocManager->GetNextDocTemplate(pos);
ASSERT(pTemplate != NULL);
ASSERT_KINDOF(CDocTemplate, pTemplate);
strTypeName.Empty();
pTemplate->GetDocString(strTypeName, CDocTemplate::fileNewName);
OutputDebugString(strTypeName);
}

输出是空值,所以。。。求助中
暗黑帝国 2011-06-02
  • 打赏
  • 举报
回复
是不是建的工程类型不对啊
不是多文档类型?
Eleven 2011-06-02
  • 打赏
  • 举报
回复
我跟踪调试了下,竟然没有导入这三个类,不知道什么原因?请问各位高手。
-------------------------
什么叫没有导入这三个类?

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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