SCROLLINFO 滚动的问题
垂直滑动块通过 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;
看不明白???? 哪位大佬帮讲讲 谢谢了!!!!
(i-yPos)*yChar
首先,yChar 表示的是每行的高度
为什么是 i - yPos ?
i 表示的是文本的第 i 行
yPos此时表示垂直滚动条的位置
因为是往上滚动时应该为负数,此时行数变为:i +(- yPos)
往下滚动时应该为正数,此时行数变为: i - (+ yPos)
很明显,两种情况都可以写作 i - yPos
页:
[1]