CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

高分求解决方法!是关于窗口分割(splitter)的!高手来,灌水无分!

楼主neverdead(大浪淘沙)2004-12-03 22:38:13 在 VC/MFC / 基础类 提问

BOOL   CMainFrame::OnCreateClient(LPCREATESTRUCT   lpcs,   CCreateContext*   pContext)    
  {  
  CSize   size1;  
  CRect   rect(0,   0,   0,   0);  
  this   ->GetWindowRect(&rect);  
  size1.cx   =   (rect.right   -   rect.left)   /   2;  
  size1.cy   =   (rect.bottom   -   rect.top)   /   4;  
  if(!m_wndSplitter.CreateStatic(this,   2,   1))  
  {  
  TRACE0("Failed   to   CreateStaticSpitter\n");  
  return   FALSE;  
  }  
  if(!m_wndSplitter.CreateView(0,   0,   RUNTIME_CLASS(CResultView),   size1,   pContext))  
  {  
  TRACE0("Failed   to   create   first   pane\n");  
  return   FALSE;  
  }  
  if(!m_wndSplitter2.CreateStatic(  
  &m_wndSplitter,                        
  1,   2,                                                                          
  WS_CHILD   |   WS_VISIBLE   |   WS_BORDER,  
  m_wndSplitter.IdFromRowCol(1,   0)  
  ))  
  {  
  TRACE0("Failed   to   create   nested   splitter\n");  
  return   FALSE;  
  }  
  if(!m_wndSplitter2.CreateView(0,   0,   RUNTIME_CLASS(CUserView),   size1,   pContext))  
  {  
  TRACE0("Failed   to   create   second   pane\n");  
  return   FALSE;  
  }  
  if(!m_wndSplitter2.CreateView(0,   1,   RUNTIME_CLASS(CUserView2),   CSize(0,   0),   pContext))  
  {  
  TRACE0("Failed   to   create   third   pane\n");  
  return   FALSE;  
  }  
  ((CResultView*)(m_wndSplitter.GetPane(0,   0)))   ->   SetReadOnly(true);  
  SetActiveView((CView*)m_wndSplitter2.GetPane(0,   0));  
  return   TRUE;  
  }  
   
  以上函数实现如下分割窗口:  
  |-----------------|  
  |                                   |  
  |-----------------|  
  |                 |                 |  
  |                 |                 |  
  |-----------------|  
   
  现通过修改以上函数实现如下窗口形式:  
   
  |-----------------|  
  |                 |                 |  
  |                 |                 |  
  |-----------------|  
  |                                   |  
  |-----------------|  
  并说明CreateView()函数的第4个参数即SIZE的具体用法  
  不能用SetRowInfo,即不能用  
  http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=182284       中的类似方法 问题点数:0、回复次数:20Top

1 楼EnochShen(小疯子:真的好菜—知耻而后勇!)回复于 2004-12-03 22:41:14 得分 0

EnochShen@qq.com来问我拿吧Top

2 楼neverdead(大浪淘沙)回复于 2004-12-03 22:47:18 得分 0

那留个QQ吧!我下了~~接下来的明天早上回复!Top

3 楼whs1980(知秋一叶)回复于 2004-12-04 11:43:06 得分 0

BOOL   CMainFrame::OnCreateClient(LPCREATESTRUCT   lpcs,   CCreateContext*   pContext)    
  {  
  CSize   size1;  
  CRect   rect(0,   0,   0,   0);  
  this   ->GetWindowRect(&rect);  
  size1.cx   =   (rect.right   -   rect.left)   /   2;  
  size1.cy   =   (rect.bottom   -   rect.top)   /   4;  
  if(!m_wndSplitter.CreateStatic(this,   2,   1))  
  {  
  TRACE0("Failed   to   CreateStaticSpitter\n");  
  return   FALSE;  
  }  
  if(!m_wndSplitter2.CreateStatic(  
  &m_wndSplitter,                        
  1,   2,                                                                          
  WS_CHILD   |   WS_VISIBLE   |   WS_BORDER,  
  m_wndSplitter.IdFromRowCol(0,   0)  
  ))  
  {  
  TRACE0("Failed   to   create   nested   splitter\n");  
  return   FALSE;  
  }  
  if(!m_wndSplitter2.CreateView(0,   0,   RUNTIME_CLASS(CUserView),   size1,   pContext))  
  {  
  TRACE0("Failed   to   create   second   pane\n");  
  return   FALSE;  
  }  
  if(!m_wndSplitter2.CreateView(0,   1,   RUNTIME_CLASS(CUserView2),   CSize(0,   0),   pContext))  
  {  
  TRACE0("Failed   to   create   third   pane\n");  
  return   FALSE;  
  }  
   
  if(!m_wndSplitter.CreateView(1,   0,   RUNTIME_CLASS(CResultView),   size1,   pContext))  
  {  
  TRACE0("Failed   to   create   first   pane\n");  
  return   FALSE;  
  }  
  ((CResultView*)(m_wndSplitter.GetPane(0,   0)))   ->   SetReadOnly(true);  
  SetActiveView((CView*)m_wndSplitter2.GetPane(0,   0));  
  return   TRUE;  
  }  
  哈哈哈.......  
  Top

4 楼bobob(静思)回复于 2004-12-04 12:13:31 得分 0

以下代码已经实现,自己把尺寸调整一下就可以了  
   
  BOOL   CMainFrame::OnCreateClient(LPCREATESTRUCT   lpcs,   CCreateContext*   pContext)    
  {  
  CSize   size1;  
  CRect   rect(0,   0,   0,   0);  
  this   ->GetWindowRect(&rect);  
  size1.cx   =   (rect.right   -   rect.left)   /   2;  
  size1.cy   =   (rect.bottom   -   rect.top)   /   4;  
  if(!m_wndSplitter.CreateStatic(this,   2,   1))  
  {  
  TRACE0("Failed   to   CreateStaticSpitter\n");  
  return   FALSE;  
  }  
  if(!m_wndSplitter.CreateView(1,   0,   RUNTIME_CLASS(CResultView),   size1,   pContext))  
  {  
  TRACE0("Failed   to   create   first   pane\n");  
  return   FALSE;  
  }  
  if(!m_wndSplitter2.CreateStatic(  
  &m_wndSplitter,                        
  1,   2,                                                                          
  WS_CHILD   |   WS_VISIBLE   |   WS_BORDER,  
  m_wndSplitter.IdFromRowCol(0,   0)  
  ))  
  {  
  TRACE0("Failed   to   create   nested   splitter\n");  
  return   FALSE;  
  }  
  if(!m_wndSplitter2.CreateView(0,   0,   RUNTIME_CLASS(CUserView),   size1,   pContext))  
  {  
  TRACE0("Failed   to   create   second   pane\n");  
  return   FALSE;  
  }  
  if(!m_wndSplitter2.CreateView(0,   1,   RUNTIME_CLASS(CUserView2),   CSize(0,   0),   pContext))  
  {  
  TRACE0("Failed   to   create   third   pane\n");  
  return   FALSE;  
  }  
  //((CResultView*)(m_wndSplitter.GetPane(0,   0)))   ->   SetReadOnly(true);  
  SetActiveView((CView*)m_wndSplitter2.GetPane(0,   0));  
  return   TRUE;  
  }  
  Top

5 楼bobob(静思)回复于 2004-12-04 12:15:29 得分 0

size的用发:就是指定create出来的view的初始大小Top

6 楼neverdead(大浪淘沙)回复于 2004-12-04 16:20:23 得分 0

错~~都错了~~~  
  whs1980(知秋一叶)和bobob(bobob)(★★★★★★)    
  给出的代码运行的结果都是  
  |--------|--------|  
  |-----------------|     <------  
  |                                   |  
  |                                   |  
  |                                   |  
  |-----------------|  
  也就是显示了不正常的结果~即下面的窗口覆盖了上面的窗口~箭头指的分割线已经贴到窗口的上边缘了  
   
  to:   bobob(bobob)(★★★★★★)    
  我正是搞不出这个尺寸才发这个贴的!  
  不然我也不会发这个贴,不会来问size的用法及其具体的实现过程  
   
  继续在线等答案  
  有兴趣去解决的朋友也可以与我联系:  
  QQ   :   214200729(验证窗写   “窗口分割”即可,不写验证消息不通过!   )  
   
  我提供源码!  
  Top

7 楼medie(苦丁茶)回复于 2004-12-04 20:11:51 得分 0

看来只能在创建之后设置位置信息了  
  因为上面的View最后才创建Top

8 楼I_Love_CPP(Never stop!)回复于 2004-12-04 20:41:32 得分 0

我已经99.99%地解决了这个问题了。  
   
  呵呵,好高兴哦。  
   
  唯一的缺点是关闭时会报个错。Top

9 楼neverdead(大浪淘沙)回复于 2004-12-05 09:01:10 得分 0

to:I_Love_CPP(我爱C++)    
  那贴出来呀,我好给分!  
   
  这个问题可以用SetRowInfo解决的!而且非常的简单!  
  但是,我主要是想知道CreateView的第四个参数是怎么实现的,所以  
  就在这里钻牛角了~~Top

10 楼I_Love_CPP(Never stop!)回复于 2004-12-05 13:05:42 得分 0

一?  
  不是在QQ上已经给你讲明白了吗?Top

11 楼neverdead(大浪淘沙)回复于 2004-12-05 19:00:58 得分 0

to:I_Love_CPP(我爱C++)  
  代码呢?我不是和你说来坛子里贴的嘛~~  
  QQ那里你只是说了一下你的原理~~  
  但是,我不知道你那种方法管不管用!  
   
   
  Top

12 楼neverdead(大浪淘沙)回复于 2004-12-05 22:29:02 得分 0

沉的好快啊!Top

13 楼crystal521(【云淡风轻】)回复于 2004-12-06 10:48:12 得分 0

不用不能用SetRowInfo好像不行吧?Top

14 楼neverdead(大浪淘沙)回复于 2004-12-06 13:12:18 得分 0

to:crystal521(水晶泪)  
  为什么不行?  
  我第一帖贴出来的代码就没有SetRowInfo!  
  Top

15 楼chuanke((C ) 2005【空间代数】. All rights reserved .)回复于 2004-12-06 14:22:43 得分 0

路过Top

16 楼crystal521(【云淡风轻】)回复于 2004-12-06 16:58:28 得分 0

你这两种显示是不一样的,第一种可以而第二种嘛,反正我试过是不行的Top

17 楼neverdead(大浪淘沙)回复于 2004-12-18 19:55:26 得分 0

知道为什么不行吗?  
   
  难道CSDN真的没有高手?  
  或是高手都喜欢潜水?Top

18 楼crystal521(【云淡风轻】)回复于 2004-12-19 12:00:54 得分 0

具体你可以研究一下CSplitter类Top

19 楼neverdead(大浪淘沙)回复于 2004-12-25 20:11:35 得分 0

如果有时间的话,这倒是个不错的建议!Top

20 楼ericzhangali(另一个空间)回复于 2005-03-16 10:01:12 得分 0

接分Top

相关问题

  • 窗体分割(Splitter)
  • 如何使用splitter分割窗口?并
  • Splitter 不可以上下分割窗体 ?????????????
  • 给分。灌水!
  • splitter分割窗口的问题。在线给分
  • 用Splitter组件怎样对窗口实现横向分割
  • 诚心求教Splitter(分割条)的用法。
  • 灌水灌水!西师的都送!!——分!!
  • 灌水有分!!快来灌水!!
  • 怎么分割?

关键词

  • runtime
  • ws
  • 函数
  • wndsplitter
  • createview
  • pcontext
  • cuserview
  • cresultview
  • rect
  • trace

得分解答快速导航

  • 帖主:neverdead

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo