在网上找了很久
困扰了我很长时间的问题
经过总结,把真正正确的思想给大家,在这里只将窗体的任意分割介绍给大家,不涉及分割条的美化
1:新建一个单文档的应用程序
2:新建一个类CSplitterWndEx基类设置为CSplitterWnd(这个在默认里是没有的,可以手动添加)其实你完全可以用CSplitterWnd而不用派生类,但是如果今后你想修缮你的界面会非常吃力
3.在CMainFrame类中添加三个数据成员
CSplitterWndEx m_splitter,m_splittrer1,m_splitter2;
然后在.cpp文件中将CxxView.h包含进来
4.添加消息相应函数On
添加如下代码
m_splitter.CreateStatic(this,1,2);
m_splitter1.CreateStatic(&m_splitter,2,1,WS_CHILD|WS_VISIBLE,m_splitter.IdFromRowCol(0,0));
m_splitter1.CreateView(0,0,RUNTIME_CLASS(CFengeView),CSize(cr.Width()/3,cr.Height()*2/3),pContext);
m_splitter1.CreateView(1,0,RUNTIME_CLASS(CFengeView),CSize(cr.Width()/3,cr.Height()/3),pContext);
m_splitter2.CreateStatic(&m_splitter,2,1,WS_CHILD|WS_VISIBLE,m_splitter.IdFromRowCol(0,1));
m_splitter2.CreateView(0,0,RUNTIME_CLASS(CFengeView),CSize(cr.Width()*2/3,cr.Height()*4/5),pContext);
m_splitter2.CreateView(1,0,RUNTIME_CLASS(CFengeView),CSize(cr.Width()*2/3,cr.Height()/5),pContext);
m_splitter.SetColumnInfo(0,cr.Width()/3,0);
5.注意事项
我用大字体红色标注的部分是大家一定要格外关注的地方
一般网上的代码,都没提示这个地方
但如果不加上这句
代码运行的效果如下图所示
会发生重叠
在这里不过多解释原因但是,如果碰到这中情况记得两个函数
void SetColumnInfo( int col, int cxIdeal, int cxMin );
col:指的是你要设定的列
cxideal:只你要设定的列的宽度
cxMin:一般设定为0
void SetRowInfo( int row, int cyIdeal, int cyMin );
row:知你要设定的行
同上