鱼C论坛

 找回密码
 立即注册
查看: 3414|回复: 17

关于滚动条和ScrollWindow函数一些问题,求指点!

[复制链接]
发表于 2014-11-12 12:02:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 隨鈊乄鎍慾 于 2014-11-12 12:37 编辑

看了鱼油“计机羊咩咩”发的一个贴子如下:我也存在这一块的问题没有吃透请牛人点评一下他这样理解对吗?!如果对,我就可以照他的思路去理解。(兰色字体部分)
    咩咩原文件如下:
        SCROLLINFO结构体存放着滑动条的一切信息

ScrollWindow会根据参数 “滑动” (bitbit) 当前客户区的数据,超出客户区的数据将不保留
滑动后客户区将出现无效区域,系统会自动获取并发送WM_PAINT消息  
无效区域的大小及位置数据将会记录在PAINTSTRUCT中的rePaint结构里


无论上移还是下移,客户区的基点仍为(0,0),系统通过控制top和buttom两个参数实现对无效区域的定位
SetScrollInfo(hwnd,SB_VERT,&vScroll,TRUE);
GetScrollInfo(hwnd,SB_VERT,&vScroll);

if(iScrollPos != vScroll.nPos)
{
ScrollWindow(hwnd,0,cyChar * (iScrollPos - vScroll.nPos),NULL,NULL);
UpdateWindow(hwnd);
} 在改变滑动条位置之后,先存入SCROLLINFO(vScroll)数据再重新读取
此时在系统内部会计算当前滑动条的位置是否超出nMin和nMax,若超出范围则小小取大(nMin),大大取小(nMax)
否则保持滑动条当前位置

PaintBeg = max(0,vScroll.nPos + ps.rcPaint.top / cyChar);
PaintEnd = min(LineMath,vScroll.nPos + ps.rcPaint.bottom / cyChar);
for(;PaintBeg <= PaintEnd;PaintBeg++)
{
y = cyChar * (PaintBeg - vScroll.nPos);
StringCchLength(arr[PaintBeg],3,&CchLength);
TextOut(hdc,0,y,arr[PaintBeg],CchLength);
}
因为UpdateWindow后系统会立即发出一条不进队列的WM_PAINT消息
故改变滑动条位置后必须先保存当前SCROLLINFO数据
在重绘客户区时 ps.rcPaint.top / cyChar 计算出 ”滚动前“ 在客户区最后一行的数据位置//这一句这样理解对不对?
因此加上当前滑动块位置(vScroll.nPos)便可计算出将要读取的数据的位置(此位置是数据在缓冲区内的位置)
而 PaintBeg - vScroll.nPos可计算出数据在客户区重绘的位置(第n行)


当中还有各种细节  不暇细说  留给读者慢慢体会
若说的不好  请指出 谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-11-12 18:42:50 | 显示全部楼层
莫非要自问自答!?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-13 21:56:28 | 显示全部楼层

回帖奖励 +1 鱼币

这么理解是正确的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-14 11:27:42 | 显示全部楼层

回帖奖励 +1 鱼币

:titter:我能惭愧的回复一句,现在我看回去意识也没看懂么?   一直在准备蓝桥杯的事Windows设计都放下一个多月了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-14 12:46:20 | 显示全部楼层
计机羊咩咩 发表于 2014-11-14 11:27
我能惭愧的回复一句,现在我看回去意识也没看懂么?   一直在准备蓝桥杯的事Windows设计都放下一个 ...

感谢分享!..............:big
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-16 23:34:26 | 显示全部楼层

回帖奖励 +1 鱼币

感谢楼主分享
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-2-20 10:28:27 | 显示全部楼层

回帖奖励 +1 鱼币

{:1_1:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-4-17 02:03:22 | 显示全部楼层

回帖奖励 +1 鱼币

顶lz!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-4-17 22:41:54 | 显示全部楼层

回帖奖励 +1 鱼币

相信小甲鱼的视频已经讲的很清晰明了的,实在不行就先跳过
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-4-18 09:52:57 | 显示全部楼层
支持lz
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-4-19 01:05:36 | 显示全部楼层

回帖奖励 +1 鱼币


支持lz
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-4-19 03:01:38 | 显示全部楼层
支持lz
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-4-19 05:38:25 | 显示全部楼层
支持lz
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-4-27 21:40:20 | 显示全部楼层

回帖奖励 +1 鱼币

支持
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

头像被屏蔽
发表于 2015-4-28 07:36:33 From FishC Mobile | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-4-28 08:18:54 | 显示全部楼层
学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-4-28 14:54:50 From FishC Mobile | 显示全部楼层
我只是路过打酱油的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-4-28 15:01:37 From FishC Mobile | 显示全部楼层
感恩无私的分享与奉献 :)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 22:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表