解决方案 »
- 求高手解决:采集卡通信故障4~~~~if中的buffer[0]==S_T_stop[0]在whach窗口中看到的不一样。
- hook到其他进程的API后 如何获取其他进程调用该API所传递的参数呢
- 关于A tool returned an error code from "Performing registration"的错误
- 100分提问,如何编写串口接口函数?最好能有代码参考!
- 使用ListCtrl,每次刷新记录,为什么如此明显,一跳一跳的?
- 关于CPP沉思录
- 有这样一个函数吗?
- 关于CString类的Format("%.1f",dd)的疑惑。(急,在线等待)
- 什么时候才能CreateButton?
- 征求通信代码!!!!
- 关于vc2010基于mfc的单文档应用程序,Ribbon界面,属性窗口的大小和位置问题
- 关于OnOk()
CFixSplitterWnd m_wndSplitterH; //用于横向切割
CFixSplitterWnd m_wndSplitterV; //用于纵向切割
BOOL m_bCreateSplitter;//分割窗体的实现
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
//对整个主框架进行混合分割视图
BOOL bResult=m_wndSplitterV.CreateStatic(this,1,2);
ASSERT(bResult);
m_wndSplitterH.CreateStatic(&m_wndSplitterV,4,1,WS_CHILD | WS_VISIBLE,m_wndSplitterV.IdFromRowCol(0,1));
//创建各自子窗片的对应的视图
m_wndSplitterV.CreateView(0,0,RUNTIME_CLASS(CSceneView),CSize(600,600),pContext);
m_wndSplitterH.CreateView(0,0,RUNTIME_CLASS(CPitchView),CSize(100,100),pContext);
m_wndSplitterH.CreateView(1,0,RUNTIME_CLASS(CYawView),CSize(100,100),pContext);
m_wndSplitterH.CreateView(2,0,RUNTIME_CLASS(CRollView),CSize(100,100),pContext);
m_wndSplitterH.CreateView(3,0,RUNTIME_CLASS(CControlView),CSize(100,100),pContext);
//设置窗格的初始化的大小
m_wndSplitterV.SetRowInfo(0,IDEAL_RAWHEIGHT,0);
m_bCreateSplitter=TRUE;
//激活sceneview使得其可以接受命令消息
m_wndSplitterV.SetActivePane(0,0,NULL);
return bResult;
}
//主框架窗体大小发生变化,调节相应的窗体大小
void CMainFrame::OnSize(UINT nType, int cx, int cy)
{
CMDIFrameWnd::OnSize(nType, cx, cy);
CRect rect;
GetClientRect(rect);
if (m_bCreateSplitter)
{
m_wndSplitterV.SetColumnInfo(0,rect.Width() *3/4,10);
m_wndSplitterV.SetColumnInfo(1,rect.Width() *1/4,10);
m_wndSplitterH.SetRowInfo(0,rect.Height() /6,10);
m_wndSplitterH.SetRowInfo(1,rect.Height() /6,10);
m_wndSplitterH.SetRowInfo(2,rect.Height() /6,10);
m_wndSplitterH.SetRowInfo(3,rect.Height()/2,10);
}
m_wndSplitterV.RecalcLayout();
m_wndSplitterH.RecalcLayout();
}
注意m_wndSplitterH.CreateView 中的第二个参数,这个参数将分割窗体和相应的视图类相对应。
我看见也能在View中进行分割啊
因为我主窗口中要显示不同的View,好几个视图进行切换的
其中一个视图我需要进行分割,所以我想在此View中进行分割
这里不能进行分割的,你只能进行不同的区域显示不同的数据,不能分割视图,视图必须依赖框架类,不能依赖视图类,这就是MFC的规定
哦,原来是这样啊,看来要学的东西很多啊
如果我定义一个CMySplitterWnd继承CSplitterWnd,有没可能在视图中进行分割呢?不在框架类中进行。
因为我看见有人这么做的,在视图中进行分割的,不过他有写个CMySplitterWnd
额 那我来捧场吧 哈哈1.OnSize()
2.MoveWindow()
3.ReCalLayout()
4. ...这几个是我遇到过的问题 ;)
我今天看了下公司的其他项目,确实有在视图类中对视图进行分割的啊,分成一个Cwnd,一个CFormView,不过我这样做,就什么也不显示了,不知道为什么,那位高人来帮我看看啊
在框架类里面可以分割视图
在某个视图内也可以再分割视图
甚至在某个视图内还可以创建框架后再分割视图
这些我以前都实现过!!楼主的问题,我没有看你的代码。但我估计可能是创建的问题。应该是静态(static)创建才可以的。
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/,
CCreateContext* pContext)
{
m_wndSplitter.CreateStatic(this,1,2);
m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CInputView),CSize(580,400),pContext);
m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CDisplayView),CSize(400,400),pContext);
return TRUE;
}
对啊,我就看到我们公司的项目能分割的,不过我自己写的就不行。
我做的很简单
就是在视图类头文件中定义了CSplitterWnd m_wndSplitter;
然后在cpp的OnCreate
中进行分割的m_wndSplitter.CreateStatic(this,1,2);
CCreateContext *pContext=(CCreateContext*)lpCreateStruct->lpCreateParams;m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CView2),CSize(500,500), pContext);
m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CPatientEnrollView),CSize(500,500),pContext);
所用分割对象:CSplitterWnd m_wndSplitter25楼写的代码估计就是lz想要的,应该没问题。
可以在视图类中进行分割,但必须响应视图类的WM_SIZE,在OnSize里面加
m_wndSplitter.MoveWindow(0,0,cx+4,cy+4);
m_wndSplitter.SetColumnInfo(0,520,0);
m_wndSplitter.RecalcLayout();