我想将窗口拆分成3块,上面2块用于显示2幅图片(一幅是另一幅的计算结果,不知道是不是需要2个Doc类或者2个Doc类实例),下面一块用于显示一个FormView,不知可不可以,哪位指点一下该怎么做。
7 个解决方案
#1
需要给他们创建视图,比如下面
BOOL CMainFrame::OnCreateClient( LPCREATESTRUCT /*lpcs*/, CCreateContext* pContext)
{ //创建一个静态分栏窗口,分为三行一列
if(m_wndSplitter1.CreateStatic(this,3,1)==NULL)
return FALSE;
//将CCuteFTPView连接到0行0列窗格上
m_wndSplitter1.CreateView(0,0,RUNTIME_CLASS(CCuteFTPView),CSize(100,100), pContext);
m_wndSplitter1.CreateView(2,0,RUNTIME_CLASS(CView4),CSize(100,100),pContext);
//将CView4连接到0行2列
if(m_wndSplitter2.CreateStatic(&m_wndSplitter,1,2,WS_CHILD|WS_VISIBLE,
m_wndSplitter.IdFromRowCol(1, 0))==NULL)
return FALSE; //将第1行0列再分开1行2列
//将CView2类连接到第二个分栏对象的0行0列
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);
return TRUE;
}
只是一个例子,并不是针对你的需求,参考改动一下就可以了。
BOOL CMainFrame::OnCreateClient( LPCREATESTRUCT /*lpcs*/, CCreateContext* pContext)
{ //创建一个静态分栏窗口,分为三行一列
if(m_wndSplitter1.CreateStatic(this,3,1)==NULL)
return FALSE;
//将CCuteFTPView连接到0行0列窗格上
m_wndSplitter1.CreateView(0,0,RUNTIME_CLASS(CCuteFTPView),CSize(100,100), pContext);
m_wndSplitter1.CreateView(2,0,RUNTIME_CLASS(CView4),CSize(100,100),pContext);
//将CView4连接到0行2列
if(m_wndSplitter2.CreateStatic(&m_wndSplitter,1,2,WS_CHILD|WS_VISIBLE,
m_wndSplitter.IdFromRowCol(1, 0))==NULL)
return FALSE; //将第1行0列再分开1行2列
//将CView2类连接到第二个分栏对象的0行0列
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);
return TRUE;
}
只是一个例子,并不是针对你的需求,参考改动一下就可以了。
#2
我照这个代码,可是不行!
在RUNTIME_CLASS那里出错:
F:\PROJECT\CPP\VIDEOPRO\BMPProc\MainFrm.cpp(82) : error C2653: 'CFormParamView' : is not a class or namespace name
F:\PROJECT\CPP\VIDEOPRO\BMPProc\MainFrm.cpp(82) : error C2065: 'classCFormParamView' : undeclared identifier
CFormParamView是我从CFormView继承的类。其他从CScrollView继承的类也报同样的错误!不知道为什么!——哪位高手指点一下!非常感谢!
在RUNTIME_CLASS那里出错:
F:\PROJECT\CPP\VIDEOPRO\BMPProc\MainFrm.cpp(82) : error C2653: 'CFormParamView' : is not a class or namespace name
F:\PROJECT\CPP\VIDEOPRO\BMPProc\MainFrm.cpp(82) : error C2065: 'classCFormParamView' : undeclared identifier
CFormParamView是我从CFormView继承的类。其他从CScrollView继承的类也报同样的错误!不知道为什么!——哪位高手指点一下!非常感谢!
#3
加上'CFormParamView' 它的头文件,或在MainFrm.h中public部分加上class FormParamView,类似这个意思,参考一下。
总的来说应该是你没有把需要的类关联进来。
总的来说应该是你没有把需要的类关联进来。
#4
我用了两个Splitter,第一个分成2行1列,第二个在第一个的(0,0)处分成1行2列。都是用的CreateStatic函数拆分的。这个时候不管先在哪里CreateView,第一个Splitter的(0,0)高度总是0(只拆分1次的时候高度是可以正常设置的)。
#5
同问第二个问题
没有人能回答吗
没有人能回答吗
#6
第二没什么特别的,直接在OnCreateClient处理就可以了
#7
对,加头文件,我昨天也和你出现的问题一样,后来加头文件就好了!
#1
需要给他们创建视图,比如下面
BOOL CMainFrame::OnCreateClient( LPCREATESTRUCT /*lpcs*/, CCreateContext* pContext)
{ //创建一个静态分栏窗口,分为三行一列
if(m_wndSplitter1.CreateStatic(this,3,1)==NULL)
return FALSE;
//将CCuteFTPView连接到0行0列窗格上
m_wndSplitter1.CreateView(0,0,RUNTIME_CLASS(CCuteFTPView),CSize(100,100), pContext);
m_wndSplitter1.CreateView(2,0,RUNTIME_CLASS(CView4),CSize(100,100),pContext);
//将CView4连接到0行2列
if(m_wndSplitter2.CreateStatic(&m_wndSplitter,1,2,WS_CHILD|WS_VISIBLE,
m_wndSplitter.IdFromRowCol(1, 0))==NULL)
return FALSE; //将第1行0列再分开1行2列
//将CView2类连接到第二个分栏对象的0行0列
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);
return TRUE;
}
只是一个例子,并不是针对你的需求,参考改动一下就可以了。
BOOL CMainFrame::OnCreateClient( LPCREATESTRUCT /*lpcs*/, CCreateContext* pContext)
{ //创建一个静态分栏窗口,分为三行一列
if(m_wndSplitter1.CreateStatic(this,3,1)==NULL)
return FALSE;
//将CCuteFTPView连接到0行0列窗格上
m_wndSplitter1.CreateView(0,0,RUNTIME_CLASS(CCuteFTPView),CSize(100,100), pContext);
m_wndSplitter1.CreateView(2,0,RUNTIME_CLASS(CView4),CSize(100,100),pContext);
//将CView4连接到0行2列
if(m_wndSplitter2.CreateStatic(&m_wndSplitter,1,2,WS_CHILD|WS_VISIBLE,
m_wndSplitter.IdFromRowCol(1, 0))==NULL)
return FALSE; //将第1行0列再分开1行2列
//将CView2类连接到第二个分栏对象的0行0列
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);
return TRUE;
}
只是一个例子,并不是针对你的需求,参考改动一下就可以了。
#2
我照这个代码,可是不行!
在RUNTIME_CLASS那里出错:
F:\PROJECT\CPP\VIDEOPRO\BMPProc\MainFrm.cpp(82) : error C2653: 'CFormParamView' : is not a class or namespace name
F:\PROJECT\CPP\VIDEOPRO\BMPProc\MainFrm.cpp(82) : error C2065: 'classCFormParamView' : undeclared identifier
CFormParamView是我从CFormView继承的类。其他从CScrollView继承的类也报同样的错误!不知道为什么!——哪位高手指点一下!非常感谢!
在RUNTIME_CLASS那里出错:
F:\PROJECT\CPP\VIDEOPRO\BMPProc\MainFrm.cpp(82) : error C2653: 'CFormParamView' : is not a class or namespace name
F:\PROJECT\CPP\VIDEOPRO\BMPProc\MainFrm.cpp(82) : error C2065: 'classCFormParamView' : undeclared identifier
CFormParamView是我从CFormView继承的类。其他从CScrollView继承的类也报同样的错误!不知道为什么!——哪位高手指点一下!非常感谢!
#3
加上'CFormParamView' 它的头文件,或在MainFrm.h中public部分加上class FormParamView,类似这个意思,参考一下。
总的来说应该是你没有把需要的类关联进来。
总的来说应该是你没有把需要的类关联进来。
#4
我用了两个Splitter,第一个分成2行1列,第二个在第一个的(0,0)处分成1行2列。都是用的CreateStatic函数拆分的。这个时候不管先在哪里CreateView,第一个Splitter的(0,0)高度总是0(只拆分1次的时候高度是可以正常设置的)。
#5
同问第二个问题
没有人能回答吗
没有人能回答吗
#6
第二没什么特别的,直接在OnCreateClient处理就可以了
#7
对,加头文件,我昨天也和你出现的问题一样,后来加头文件就好了!