CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

怎么在水平滚动条的左边加一个按钮?就是让滚动条“让出”一点地方给一个button?默认全占满了啊!

楼主yzhshty(中共日本省省委书记)2004-12-02 13:42:36 在 VC/MFC / 基础类 提问

按钮不能放在客户区,因为视图移动的时候按钮也要不动  
   
  我想加在滚动条旁边,以前见过这种效果的,不知道怎么做 问题点数:100、回复次数:13Top

1 楼huwei001982(michaelhuwei.cnblogs.com)回复于 2004-12-02 13:46:30 得分 20

重载   CScrollView   类   ?Top

2 楼happyparrot(快乐鹦鹉)回复于 2004-12-02 13:50:20 得分 0

我们以前做的软件有这个功能。不过不是我做的。Top

3 楼lzzqqq(Jonersen)回复于 2004-12-02 13:50:49 得分 10

估计要自己封装CScrollView.  
  Top

4 楼happyparrot(快乐鹦鹉)回复于 2004-12-02 13:50:52 得分 0

好像是先获取水平滚动条对象,然后用SetWindowPos之类的修改它的位置。Top

5 楼pleasehelpme(革命尚未成功,同志仍需努力)回复于 2004-12-02 14:02:52 得分 10

一定要这样做吗?  
  关注。。Top

6 楼happyparrot(快乐鹦鹉)回复于 2004-12-02 14:08:09 得分 0

我找找源程序是怎么做的。我们以前做的效果很好。水平和垂直的滚动条上都加了按钮。Top

7 楼yzhshty(中共日本省省委书记)回复于 2004-12-02 14:15:39 得分 0

pleasehelpme(革命尚未成功,同志仍需努力)  
  还有什么办法呢?不能让按钮随着view乱跑啊  
   
  是sdi工程的,而且工具栏和菜单都不可以用的  
   
  happyparrot(快乐鹦鹉)  
  谢谢你拉!高顶了分全给你!  
   
  Top

8 楼yzhshty(中共日本省省委书记)回复于 2004-12-02 14:16:16 得分 0

还有,我的是从cview继承的Top

9 楼happyparrot(快乐鹦鹉)回复于 2004-12-02 14:17:44 得分 0

找到源程序了:  
  void   CMagView::_HScrollBarOnSize(BOOL   bModifyYBar)  
  {  
  CChildFrame*   pFrame   =   (CChildFrame*)GetParentFrame();  
  ASSERT(pFrame   !=   NULL);  
  CHRuler*   pHRuler=(CHRuler*)pFrame->GetDlgItem(ID_VIEW_HRULER);  
   
  //int   iJustPos=pHRuler->IsWindowVisible()?20:0;  
  int   iJustPos=pFrame->m_iJustPos;  
   
  CScrollBar* pHBar=GetScrollBarCtrl(SB_HORZ);  
  CWnd*   pParent=pHBar->GetParent();  
  CRect rect;  
   
  GetClientRect(rect);  
  int   iWidth=rect.right-rect.left;  
   
  pHBar->GetWindowRect(rect);  
  pParent->ScreenToClient(rect);  
  int   iHeight=rect.bottom-rect.top;  
   
  pHBar->SetWindowPos(NULL,  
  pFrame->m_wndPage.m_Width-iJustPos+2,  
  rect.top,  
  iWidth+iJustPos-pFrame->m_wndPage.m_Width,  
  iHeight,  
  SWP_NOZORDER   );  
   
  if(bModifyYBar){  
  CScrollBar* pVBar=GetScrollBarCtrl(SB_VERT);  
  pParent=pVBar->GetParent();  
   
  pVBar->GetWindowRect(rect);  
  pParent->ScreenToClient(rect);  
  pVBar->SetWindowPos(   NULL,  
  rect.left,  
  2,  
  rect.right-rect.left,  
  rect.bottom-rect.top+7,  
  SWP_NOZORDER   );  
  }  
   
  }  
  这里pFrame->m_wndPage是个子窗体,用来放一些按钮。窗体的高度等于滚动条高度。Top

10 楼happyparrot(快乐鹦鹉)回复于 2004-12-02 14:19:55 得分 0

CScrollBar* pHBar=GetScrollBarCtrl(SB_HORZ);  
  这里我要说明一下,GetScrollBarCtrl(SB_HORZ)只能在拆分窗口中使用。因此你的VIEW必须是个拆分窗口。如果你只需要一个窗口,那么有个技巧:先创建拆分窗口,然后将其中一个窗口的大小和位置设置到屏幕上看不到的位置就可以了。我们以前就是这么做的。然后通过这个函数就可以获取横向和纵向滚动条对象指针了。Top

11 楼yzhshty(中共日本省省委书记)回复于 2004-12-02 14:50:02 得分 0

只能是拆分窗口啊?  
  我的工程很大,是sdi的,改成你说的哪个样子会不会很难Top

12 楼happyparrot(快乐鹦鹉)回复于 2004-12-02 14:55:35 得分 60

不是拆分窗口的话,好像难以获取滚动条指针阿。而且拆分窗口也不难阿。Top

13 楼yzhshty(中共日本省省委书记)回复于 2004-12-02 15:04:26 得分 0

关键是工程太大,怕万一出什么问题~小弟今年才毕业,功力太浅,不敢有太大的动作呵呵~~  
  我先试试  
  谢谢!!!!Top

相关问题

  • 默认按钮的问题
  • 如何把滚动条改成按钮?
  • 在问按钮控制滚动!50分
  • 如何改变pb默认的按钮
  • 请问:关于默认按钮问题!
  • 如何改变窗体默认按钮
  • 如何设置默认按钮
  • ASP.NET下设置默认按钮
  • 默认按钮事件(回车响应按钮)
  • 按钮上面的图案是滚动条上下按钮的样子?

关键词

  • top
  • null
  • ijustpos
  • phbar
  • pframe
  • getscrollbarctrl
  • pvbar
  • rect
  • 按钮
  • 滚动条

得分解答快速导航

  • 帖主:yzhshty
  • huwei001982
  • lzzqqq
  • pleasehelpme
  • happyparrot

相关链接

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

广告也精彩

反馈

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