学vc不久~试着学静态拆分窗口,可是碰到几个问题实在解决不了了1 建立View类的时候
比如:class CMyTreeView : public CTreeView
没有头文件的时候编译器会说无法识别CTreeView
可是加上#include "TreeView.h"
编译器会出现错误
e:\microsoft visual studio\myprojects\splitwnd\mytreeview.h(12) : fatal error C1083: Cannot open include file: 'TreeView.h': No such file or directory2 在实现拆分窗口的时候BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) 
{
    if(!(m_wndSplitter1.CreateStatic(this, 1, 2) ) ||          !(m_wndSplitter1.CreateView(0, 1, RUNTIME_CLASS(CSplitWndView), CSize(0,0), pContext) ) ||          !(m_wndSplitter1.CreateView(0, 0, RUNTIME_CLASS(CMyTreeView), CSize(180 ,0), pContext) ) )     {
            return FALSE;
     }
     return TRUE;
}
没有加头文件,编译器无法识别CSplitWndView, CMyTreeView加入头文件
#include "SplitWndView.h"
#include "MyTreeView.h"会发生编译错误e:\microsoft visual studio\myprojects\splitwnd\splitwndview.h(21) : error C2143: syntax error : missing ';' before '*'
e:\microsoft visual studio\myprojects\splitwnd\splitwndview.h(21) : error C2501: 'CSplitWndDoc' : missing storage-class or type specifiers
e:\microsoft visual studio\myprojects\splitwnd\splitwndview.h(21) : error C2501: 'GetDocument' : missing storage-class or type specifiers搞的莫名其妙,错误地点在CSplitterView头文件类声明中
CSplitWndDoc* GetDocument(); 这一句~
怎么只要框架文件中#include 了view头文件,就会在这一行发生编译错误??!!3  我试着直接用2个RUNETIME_CLASS(CView)
编译可以通过,但是会弹出对话框 "建立空文档失败"
哭求大家帮忙!!!!!!!!!谢谢大家了!!!!!!!!!!!

解决方案 »

  1.   

    1.CTreeView需要的头文件是afxcview.h
    2.为CSplitWndDoc类提供前置声明,即在头文件前面加上一行
    class CSplitWndDoc
    在视图类的cpp文件再加包含文档类头文件的代码,大致是
    #include "SplitWndDoc.h"
    3.应该是你具体的视图类,而不是CView
      

  2.   

    不存在TreeView.h这个文件,应该是Afxcview.h。
    必须用RUNTIME_CLASS(CSplitWndView)和 RUNTIME_CLASS(CMyTreeView)
    在两个视图类中#include "SplitWndDoc.h"