请VC++的高手进来看一下! 关于MFC的

因为我的数据量比较大,getclientrect()得到的view的大小不够显示,我想把view视图变大,然后让VC自动生成个滚动条出来。应该怎么实现啊?如果不能自动生成... 因为我的数据量比较大,getclientrect()得到的view的 大小不够显示,我想把 view视图变大,然后让VC自动生成个 滚动条出来。 应该怎么实现啊?
如果不能自动生成滚动条,应该如何手动添加啊?
展开
 我来答
eioerdsf
2010-04-02 · 超过14用户采纳过TA的回答
知道答主
回答量:45
采纳率:0%
帮助的人:0
展开全部
将你的视图类改为继承自CScrollView类即可
CScrollView这个类用于需要滚动条的场合。可以直接用向导生成,在选择视图类的基类时选择CScrollView即可。

如果我们的程序原来用的是CView类,此时想改成CScrollView类,需要稍微做一下修改。

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对象将使用这个可共享的滚动条而不再去创建它自己的滚动条。

更多关于该类的使用说明请参考msdn手册
匿名用户
2010-04-01
展开全部
使用scrollview有滚动条
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
goodczs
2010-04-01 · TA获得超过2118个赞
知道小有建树答主
回答量:2251
采纳率:0%
帮助的人:895万
展开全部
让view类派生于CScrollView就行了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shuaizhe
2010-04-02
知道答主
回答量:16
采纳率:0%
帮助的人:0
展开全部
问题不大,你可以以 CScrollView 派生出来一个视图类,加入你要绘制的代码,并为滚动条添加相应的消息响应函数即可。楼主自己试试吧~~
希望对你有所帮助:)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
aplus2000
2010-04-02 · TA获得超过130个赞
知道小有建树答主
回答量:1229
采纳率:0%
帮助的人:393万
展开全部
有处理滚动条的API的。
找一些自绘制滚动条的开源例子就知道了。不过这个是个难点。
要解决实际编程问题,请来锐英源。经验丰富,例子多多。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式