MFC Windows程序设计学习笔记--滚动条

本文介绍如何在窗口中添加并配置滚动条,包括设置滚动条的范围、位置及页大小等操作,并讨论了使用CWnd类进行滚动条设置的方法,以及在WM_HSCROLL/WM_VSCROLL消息响应中利用ScrollWindow进行高效窗口重绘的技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里说的是和 窗口关联的滚动条。

给窗口添加滚动条,指定窗口风格为 WS_VSCROLL/WS_HSCROLL。
创建了滚动条后,还需设置 范围,位置,页大小。

风格1:
CWnd::SetScrollRange/GetScrollRange
CWnd::SetScrollPos/GetScrollPos

关于重画选项的意义:
在连续多次调用,前面重画选项关,最后一次重画选项开,可提高执行效率。

风格2:
CWnd::GetScrollInfo/SetScrollInfo
(int nBar, LPSCROLLINFO lpScrollInfo, UINT nMask = SIF_ALL)

水平滚动条发WM_HSCROLL消息,
垂直滚动条发WM_VSCROLL消息。

CWnd::ScrollWindow滚动窗口,适合处理滚动条滚动造成的窗口重绘。(滚动块)使窗口客户区的整体或局部内容向 上/下/左/右滚动,滚动采用像素块传输,使移出部分无效。

如何在有滚动条窗口中高效,简洁绘制:
1.响应WM_HSCROLL/WM_VSCROLL时,用ScrollWindow
在OnPaint中。
简单的,可以按窗口空间逐行绘制。(全部绘制)
高效的,绘制前,设置映射模式的窗口原点,让窗口绘制部分和滚动位置匹配。(部分绘制)

关于:WM_CREATE
对应于 afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
注意在于 返回0,表示窗口已正确初始化,返回-1,表示不能创建。其他的消息处理函数,一般成功返回TRUE,失败FALSE。

CFrameWnd::PostNcDestroy有delete this。
CWnd::PostNcDestroy中无,对CWnd或其派生类,用new创建窗口,做MainPage时,往往需要覆盖此函数,加上delete this。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

raindayinrain

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值