MFC-CScrollView类详解

CScrollView是带滚动功能的视图的基类。可从CScrollView派生出视图类,实现自动滚动功能。

      带滚动功能的视图的基类。可从CScrollView派生出视图类,实现自动滚动功能。
    CScrollView类是一个具有滚动性能的CView。你可以在任何一个从CView派生的类
中通过重载消息映射的OnHScroll和OnVScroll成员函数来自己处理标准的滚动。但是
CScrollView给它的CView性能添加了下列特征:
    它管理窗口和视口的大小和映射模式。
    它响应滚动条消息自动滚动。
    它响应来自键盘,非滚动鼠标或IntelliMouse滚轮的消息自动滚动。
    可以通过重载消息映射的OnMouseWheel和OnRegisteredMouseWheel成员函数来自己
处理鼠标轮的滚动。就象对于CScrollView一样,这些成员函数支持为轮旋转消息
WM_MOUSEWHEEL推荐的行为。
    要利用自动滚动的优点,可以从CScrollView派生你的视类来代替CView派生。当视
第一次被创建时,如果希望根据文档的大小来计算可滚动视的大小,可以从重载的
CView::OnInitialUpdate或CView::OnUpdate中调用成员函数SetScrollSizes。(必须编写自己
的代码来查询文档的大小。参见在“Visual C++教程”中的“增强视”可以获得有关的示例。)
    调用成员函数SetScrollSize可以设置视的映射模式,可滚动视的总尺寸,以及可在水
平或垂直方向上滚动的量。所有的尺寸都是以逻辑单位给出的。视的逻辑大小通常是由保
存在文档中的数据计算出来的。但在某些情况下,可能希望为视指定一个固定的尺寸。有
关这两种方法的例子,参见CScrollView::SetScrollSizes。
    应该以逻辑单位指定在水平或垂直方向上滚动的量。缺省情况下,如果用户在滚动框
之外单击了滚动条的条身,则CScrollView滚动一“页”。如果用户单击了滚动条两端的滚
动箭头,则CScrollView滚动一“行”。缺省情况下,一页是指整个视的大小的1/10;一行
是指页大小的1/10。你可以通过传递给SetScrollSize成员函数定制的尺寸来代替这些缺省
值。例如,你可以将水平大小设置为宽度总尺寸的一部分,并将垂直大小设置为当前字体
的一行的高度。除了滚动之外,CScrollView还可自动将视的大小按比例变换成当前窗口的
    在调用派生类的OnDraw成员函数之前,CScrollView自动调整传递给OnDraw的
CPaintDC设备环境对象的视口原点。
    为了为滚动窗口调整视口原点,CScrollView重载CView::OnPrepareDC。这种调整对
于CScrollView传递给OnDraw的CPaintDC设备环境来说是自动的,但你必须为自己所使
用的其它设备环境(例如CClientDC)自己调用CScrollView::OnPrepareDC。你可以重载
CScrollView::OnPrepareDC来设置画笔,背景颜色,和其它绘画属性,但是要调用基类来进
行比例变换。滚动条可以显示在与一个视相关的三个位置,如下所示:
    可以使用WS_HSCROLL和WS_VSCROLL风格为视设置标准的窗口风格滚动条。也
可以将滚动条加在包含视的框架上,在这种情况下,框架将来自框架窗口的WM_HSCROLL
和WM_VSCROLL消息向前传递给当前的活动视。框架也可以将来自CSplitterWnd分隔器
控件的滚动信息转发给当前活动的分隔格(一个视)。当在一个CSplitterWnd中放置了一个
可共享的滚动条时,CScrollView对象将使用这个可共享的滚动条而不再去创建它自己的滚
动条。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值