m_wndSplitter.CreateStatic(this,1,2);
CRect ClientRect;
GetClientRect(&ClientRect);
m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(View1),CSize(ClientRect.Width()/4,ClientRect.Height()),pContext);
m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(View2),CSize((ClientRect.Width()/4)*3,ClientRect.Height()),pContext);
其中View1和View2基类为CFormView。程序正常运行,显示两个自己的View1和View2,我想问的是:
1 那向导自己生成的那个View(因为工程名为CSplitterTest,所以视图为CSplitterTestView)没有显示出来,是不是被View1和view2给覆盖了?
2 我想把View1或View2给删除了,看看是不是看见向导建立CSplitterTestView,可是删除就出错,是不是一个区域内一定要有个View,没有就出错?
3 我想把其中一个窗口用来显示向导建立的CSplitterTestView,为什么会提示未定义,如果把CSplitterTestView的头文件加进来,在头文件中又会出现这样的错误:
error C2143: syntax error : missing ';' before '*'
error C2501: 'CSplitterTestDoc' : missing storage-class or type specifiers
这些错误在头文件中都不是错误?
10 个解决方案
#1
"是不是被View1和view2给覆盖了" 不是,根本就没创建
用
CSplitterTestView 代替view1 或view2
加入doc.h
用
CSplitterTestView 代替view1 或view2
加入doc.h
#2
是view1 或view2代替CSplitterTestView的吧?
#3
m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CSplitterTestView),CSize(ClientRect.Width()/4,ClientRect.Height()),pContext);
#4
意思是因为有了这句,CSplitterTestView这个就不被创建显示了,可以这样理解吗?
#5
m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CSplitterTestView),CSize(ClientRect.Width()/4,ClientRect.Height()),pContext);
因为有了这句,CSplitterTestView 才被创建显示了
因为有了这句,CSplitterTestView 才被创建显示了
#6
兄弟,您可能看错了,是创建了这两个View1、View2:
m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(View1),CSize(ClientRect.Width()/4,ClientRect.Height()),pContext);
m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(View2),CSize((ClientRect.Width()/4)*3,ClientRect.Height()),pContext);
但是向导建立的CSplitterTestView却是看不见,m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CSplitterTestView),CSize(ClientRect.Width()/4,ClientRect.Height()),pContext);
这是另外一个问题:为什么这个会显示错误 而已
m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(View1),CSize(ClientRect.Width()/4,ClientRect.Height()),pContext);
m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(View2),CSize((ClientRect.Width()/4)*3,ClientRect.Height()),pContext);
但是向导建立的CSplitterTestView却是看不见,m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CSplitterTestView),CSize(ClientRect.Width()/4,ClientRect.Height()),pContext);
这是另外一个问题:为什么这个会显示错误 而已

#7
"但是向导建立的CSplitterTestView却是看不见"
不是说了吗,你就没有 创建 CSplitterTestView ,
view1 view2 去一个,
或者
加一个 创建 CSplitterTestView 的 (多分割一个)
不是说了吗,你就没有 创建 CSplitterTestView ,
view1 view2 去一个,
或者
加一个 创建 CSplitterTestView 的 (多分割一个)
#8
CSplitterTestView视图窗口没有创建,你Debug下OnCreateClient中的CMainFrame::OnCreateClient(),F11进去看看就知道了。
#9
可是这个是被注释掉的啊,如果不注释掉这一句,程序根本就运行不了。再者,我试过了,还是回到OnCreateClient,这不是递归吗(我把return CMainFrame::OnCreateClient(lpcs, pContext);中的return CMainFrame::中去掉了,要不然按F11不进函数中)?
#10
return TRUE;
本来应该 是 CFrameWnd :: 即 CMainFrame 的 父窗口 , 不能是 CMainFrame:: 否则是递归
本来应该 是 CFrameWnd :: 即 CMainFrame 的 父窗口 , 不能是 CMainFrame:: 否则是递归
#1
"是不是被View1和view2给覆盖了" 不是,根本就没创建
用
CSplitterTestView 代替view1 或view2
加入doc.h
用
CSplitterTestView 代替view1 或view2
加入doc.h
#2
是view1 或view2代替CSplitterTestView的吧?
#3
m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CSplitterTestView),CSize(ClientRect.Width()/4,ClientRect.Height()),pContext);
#4
意思是因为有了这句,CSplitterTestView这个就不被创建显示了,可以这样理解吗?
#5
m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CSplitterTestView),CSize(ClientRect.Width()/4,ClientRect.Height()),pContext);
因为有了这句,CSplitterTestView 才被创建显示了
因为有了这句,CSplitterTestView 才被创建显示了
#6
兄弟,您可能看错了,是创建了这两个View1、View2:
m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(View1),CSize(ClientRect.Width()/4,ClientRect.Height()),pContext);
m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(View2),CSize((ClientRect.Width()/4)*3,ClientRect.Height()),pContext);
但是向导建立的CSplitterTestView却是看不见,m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CSplitterTestView),CSize(ClientRect.Width()/4,ClientRect.Height()),pContext);
这是另外一个问题:为什么这个会显示错误 而已
m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(View1),CSize(ClientRect.Width()/4,ClientRect.Height()),pContext);
m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(View2),CSize((ClientRect.Width()/4)*3,ClientRect.Height()),pContext);
但是向导建立的CSplitterTestView却是看不见,m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CSplitterTestView),CSize(ClientRect.Width()/4,ClientRect.Height()),pContext);
这是另外一个问题:为什么这个会显示错误 而已

#7
"但是向导建立的CSplitterTestView却是看不见"
不是说了吗,你就没有 创建 CSplitterTestView ,
view1 view2 去一个,
或者
加一个 创建 CSplitterTestView 的 (多分割一个)
不是说了吗,你就没有 创建 CSplitterTestView ,
view1 view2 去一个,
或者
加一个 创建 CSplitterTestView 的 (多分割一个)
#8
CSplitterTestView视图窗口没有创建,你Debug下OnCreateClient中的CMainFrame::OnCreateClient(),F11进去看看就知道了。
#9
可是这个是被注释掉的啊,如果不注释掉这一句,程序根本就运行不了。再者,我试过了,还是回到OnCreateClient,这不是递归吗(我把return CMainFrame::OnCreateClient(lpcs, pContext);中的return CMainFrame::中去掉了,要不然按F11不进函数中)?
#10
return TRUE;
本来应该 是 CFrameWnd :: 即 CMainFrame 的 父窗口 , 不能是 CMainFrame:: 否则是递归
本来应该 是 CFrameWnd :: 即 CMainFrame 的 父窗口 , 不能是 CMainFrame:: 否则是递归