鱼C论坛

 找回密码
 立即注册
查看: 592|回复: 1

SCROLLINFO 滚动的问题

[复制链接]
最佳答案
0 
发表于 2017-10-16 02:57:55 | 显示全部楼层 |阅读模式

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

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

x
垂直滑动块

通过 SCROLLINFO 来滚动

在 WM_CREATE 消息中获得
    1.字体宽度
    2.字体高度
        3.变宽字体宽度

在 WM_SZIE 消息中获得
        1.客户区宽度
        2.客户区高度
       
        3.设置 SCROLLINFO 结构 最大值 最小值 一页需要移动的记录(客服区高度/字体高度)
       
        4.使用 SetScrollInfo(hwn, SB_VERT, &si, TRUE);  进行保存设置
       
在 WM_VSCROLL 消息中改变 滑块的位置

        1.获得当前滑块的位置
        2.对滑块事件做偏移处理
        3.保存滑块的位置
        4.对比滑块的位置是否改变
                1.滚动窗口 ScrollWindow(hwnd, 0, (改变前的位置 - 改变后的位置)*字体高度, NULL, NULL);
                2.更新窗口 UpdateWindow(hwnd);
               
在 WM_PAINT 消息 中处理
       
        0.获得设备环境句柄  hdc 及 填充 PAINTSTRUCT 结构
       
        1.获得当前滑块的位置
       
        2.计算出失效区域的信息
                1. 失效区域开始 = max(0, 滑块的位置 + 失效区域的顶部/字体高度)
                                保证 开始索引 最小 为 0
                               
                2.失效区域开始 = min(MUNLINES - 1, 滑块的位置 + 失效区域的底部/字体高度)
                                保证 开始索引 最大 为 MUNLINES - 1
                               
        从上面我们获得了 需要重新 绘制 的索引
       
        然后开始 绘制
       
                TextOut(hdc, X轴距, Y轴距, 需要重绘的信息, 重绘信息的数量)
               
                        X 轴 是 关于 水平 滑动条的 我们这里 无视
               
                        *重点 Y 轴距
                                怎么确定需要重绘的区域
                            视频里是 (i-yPos)*yChar;
                                看不明白  ???? 哪位大佬帮讲讲 谢谢了!!!!
       
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
1287 
发表于 2017-10-27 16:24:36 | 显示全部楼层
(i-yPos)*yChar
首先,yChar 表示的是每行的高度
为什么是 i - yPos ?
i 表示的是文本的第 i 行
yPos此时表示垂直滚动条的位置
因为是往上滚动时应该为负数,此时行数变为:  i +(- yPos)
往下滚动时应该为正数,此时行数变为: i - (+ yPos)
很明显,两种情况都可以写作 i - yPos
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐上一条 /1 下一条

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号

GMT+8, 2018-9-26 06:08

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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