热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何增加分隔视图

如何增加分隔视图,我这里也不相关的书和代码,完全按照步骤去做,代码也不一样,我也对了一下给的示例源程序,完全都一样,为什么我的就编译不通过呢?找不出问题来,我在CMainFrame
如何增加分隔视图,我这里也不相关的书和代码,完全按照步骤去做,代码也不一样,
我也对了一下给的示例源程序,完全都一样,为什么我的就编译不通过呢?找不出问题来,

    我在CMainFrame::OnCreateClient中
    m_wndSplitter1.CreateView(0,0,RUNTIME_CLASS(CSplitWndDemoView),CSize(100,100), pContext); 
    m_wndSplitter1.CreateView(2,0,RUNTIME_CLASS(CView4),CSize(100,100),pContext); 

    m_wndSplitter2.CreateView(0,0,RUNTIME_CLASS(CView2),CSize(400,300),pContext); //将CView3类连接到第二个分栏对象的0行1列
    m_wndSplitter2.CreateView(0,1,RUNTIME_CLASS(CView3),CSize(400,300),pContext); 

    时编译说没有CSplitWndDemoView CView4 CView2 CView3这几个类,但是我也在MainFrm.cpp中include了呀,为什么就是不通过呢,

14 个解决方案

#1


有相关的代码和书,代码也不样,

#2


如果包含了相应的头文件,则不会提示相关的类没有定义的。请楼主再检查一下。

#3


按理说不会的,贴出错误提示看看。

#4


它提示我插入的类有问题,

 syntax error : missing ';' before '*'
d:\splitterwnddemo\splitterwnddemoview.h(21) : error C2501: 'CSplitterWndDemoDoc' : missing storage-class or type specifiers
d:\splitterwnddemo\splitterwnddemoview.h(21) : error C2501: 'GetDocument' : missing storage-class or type specifiers
执行 cl.exe 时出错.

SplitterWndDemo.exe - 1 error(s), 0 warning(s)


    但是SplitterWndDemoDoc.h是系统自动生成的,为什么还提示有错呢,

#5


d:\splitterwnddemo\splitterwnddemoview.h(21) : error C2143: syntax error : missing ';' before '*'
d:\splitterwnddemo\splitterwnddemoview.h(21) : error C2501: 'CSplitterWndDemoDoc' : missing storage-class or type specifiers
d:\splitterwnddemo\splitterwnddemoview.h(21) : error C2501: 'GetDocument' : missing storage-class or type specifiers
执行 cl.exe 时出错.

SplitterWndDemo.exe - 1 error(s), 0 warning(s)

#6


其它地方应该是没错,就是一在CMainFrame::OnCreateClient中写上代相关代码就出错

#7


加上 文档类的头文件 试一下

#8


加了,用 m_wndSplitter.CreateView(0,0,pContext->m_pNewViewClass,paneSize,pContext);
就没问题,但是若用
         pContext->m_pNewViewClass=RUNTIME_CLASS(CDirTreeView);
         m_wndSplitter.CreateView(0,0,pContext->m_pNewViewClass,paneSize,pContext);


它就会说
C:\Documents and Settings\Administrator\桌面\MyEDiary\MainFrm.cpp(182) : error C2653: 'CDirTreeView' : is not a class or namespace name
C:\Documents and Settings\Administrator\桌面\MyEDiary\MainFrm.cpp(182) : error C2065: 'classCDirTreeView' : undeclared identifier
执行 cl.exe 时出错.

MainFrm.obj - 1 error(s), 0 warning(s)

头文件中也#include "DirTreeView.h"了,到底是什么地方出错了,

#9


这可能是个重复包含头文件的问题。
用下面的步骤试试。

1、去掉所有头文件中的include语句。(不去掉的话很容易产生重复包含)。可以在.cpp中添加头文件。

2、如果在头文件中就引入了某个类。只需要声明一下定义就OK了。比如:class CDirTreeView;

#10


来晚了
就是LS所说

#11


嗯同意,有可能是两个头文件里面互包含了。

#12


我新加了一个类class CDirTreeView : public CTreeView

又重载了CMainFrame::OnCreateClient


MainFrm.cpp中#include "DirTreeView.h"

在CMainFrame::OnCreateClient中加入代码
         CRect rect;
GetClientRect(&rect);
CSize paneSize(rect.Width()/6,rect.Height());

m_wndSplitter.CreateStatic(this,1,2);

m_wndSplitter.CreateView(0,1,pContext->m_pNewViewClass,paneSize,pContext);
pContext->m_pNewViewClass=RUNTIME_CLASS(CDirTreeView);
//
m_wndSplitter.CreateView(0,0,pContext->m_pNewViewClass,paneSize,pContext);

m_wndSplitter.RecalcLayout();
m_wndSplitter.SetActivePane(0,1);

return TRUE;

其它地方未做任何修改,但是编译时有误

   c:\documents and settings\administrator\桌面\新建文件夹\myediary\dirtreeview.h(14) : error C2504: 'CTreeView' : base class undefined

这是什么地方出错了


#13


stdafx.h文件中加入头文件Afxcview.h


#14


为什么要加这个文件呢?


推荐阅读
author-avatar
青樽有酒_585_587
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有