mfc任意分割窗口

在网上找了很久

困扰了我很长时间的问题

经过总结,把真正正确的思想给大家,在这里只将窗体的任意分割介绍给大家,不涉及分割条的美化

1:新建一个单文档的应用程序

2:新建一个类CSplitterWndEx基类设置为CSplitterWnd(这个在默认里是没有的,可以手动添加)其实你完全可以用CSplitterWnd而不用派生类,但是如果今后你想修缮你的界面会非常吃力

3.在CMainFrame类中添加三个数据成员

CSplitterWndEx m_splitter,m_splittrer1,m_splitter2;

然后在.cpp文件中将CxxView.h包含进来

4.添加消息相应函数OnCreateClient

添加如下代码

 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:知你要设定的行

同上





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值