win32 中关于ScrollWindow函数的应用
2015-05-02 12:45
190 查看
1.SetScrollInfo 函数的说明:
si.cbSize = sizeof(SCROLLINFO);
si.cbMask = SIF_RANGE | SIF_PAGE;
si.nMin = 0;
si.nMax = NUMLINES - 1;
si.nPage = cyClient/cyChar;
SetScrollInfo(hwnd, SB_VERT, &si, TRUE);
这个时候Windows会把最大的滚动条范围限制为
si.nMax - si.nPage + 1
而不是NUMLINES-1。这样以来就很方便了。像前面说的那样,假设NUMLINES等于75,那么最后滚动条的最大范围是74-50+1,也就是25了。这正是我们想要的。这些都是系统自动设置的。虽然上面的代码中si.nMax被设置为NUMLINES-1,但是系统会自动把它设置成si.nMax - si.nPage + 1。
2
ScrollWindow的操作是根据参数的滚动范围 算出 不会滚出显示区域的矩形,对这部分像素直接BitBlt到新的合适位置,对于滚动出现的新的矩形,擦除背景,设该矩形为无效区域
窗口有无效区域会触发WM_PAINT,新的区域也会很及时的刷新
ScrollWindow做了两件事情:
1、bitblt部分像素到指定区域。2、设置无效区域。
比如说客户端只能显示100行的数据。本来显示的是1~100行,向上移动20行的距离后要显示的数据是21~120行,21-100行直接通过Bitblt赋值到前80行的位置,设置后面的20行为无效区域,由用户完成绘制。
BOOL ScrollWindow(
HWND hWnd, // handle to window
int XAmount, // horizontal scrolling
int YAmount, // vertical scrolling
CONST RECT *lpRect, // client area
CONST RECT *lpClipRect // clipping rectangle
);
卷动范围是由lpRect确定的,但是lpClipRect是由
si.cbSize = sizeof(SCROLLINFO);
si.cbMask = SIF_RANGE | SIF_PAGE;
si.nMin = 0;
si.nMax = NUMLINES - 1;
si.nPage = cyClient/cyChar;
SetScrollInfo(hwnd, SB_VERT, &si, TRUE);
这个时候Windows会把最大的滚动条范围限制为
si.nMax - si.nPage + 1
而不是NUMLINES-1。这样以来就很方便了。像前面说的那样,假设NUMLINES等于75,那么最后滚动条的最大范围是74-50+1,也就是25了。这正是我们想要的。这些都是系统自动设置的。虽然上面的代码中si.nMax被设置为NUMLINES-1,但是系统会自动把它设置成si.nMax - si.nPage + 1。
2
BOOL ScrollWindow( HWND hWnd, // handle to window int XAmount, // horizontal scrolling int YAmount, // vertical scrolling CONST RECT *lpRect, // client area CONST RECT *lpClipRect // clipping rectangle );
ScrollWindow的操作是根据参数的滚动范围 算出 不会滚出显示区域的矩形,对这部分像素直接BitBlt到新的合适位置,对于滚动出现的新的矩形,擦除背景,设该矩形为无效区域
窗口有无效区域会触发WM_PAINT,新的区域也会很及时的刷新
ScrollWindow做了两件事情:
1、bitblt部分像素到指定区域。2、设置无效区域。
比如说客户端只能显示100行的数据。本来显示的是1~100行,向上移动20行的距离后要显示的数据是21~120行,21-100行直接通过Bitblt赋值到前80行的位置,设置后面的20行为无效区域,由用户完成绘制。
BOOL ScrollWindow(
HWND hWnd, // handle to window
int XAmount, // horizontal scrolling
int YAmount, // vertical scrolling
CONST RECT *lpRect, // client area
CONST RECT *lpClipRect // clipping rectangle
);
卷动范围是由lpRect确定的,但是lpClipRect是由
相关文章推荐
- cocos2d中关于函数指针的应用
- C++初学者(关于函数指针的应用)
- 关于Win32 API的RedrawWindow函数和InvalidateRect函数
- 关于在WIN32调用一些Zw系列的文件操作函数
- 关于c++中排序函数的应用
- avr-gcc中关于delay延时函数的应用修改版[ourdev]
- Episode Five:opencv中关于Homography()函数的应用
- 关于在WIN32调用一些Zw系列的文件操作函数
- 关于在WIN32调用一些Zw系列的文件操作函数
- 关于python中help函数的应用
- 关于strtok的函数应用
- SqlServer中关于时间函数的应用
- 关于报表自定义函数的应用
- 关于select 函数在 Linux C Socket编程中的应用
- 关于msgbox几个函数的应用
- 关于row_number、desek_rank、ntile等函数应用
- 关于oracle的函数,存储过程,触发器,序列,视图,左右连接一些的应用 带案例
- 关于C语言通过函数传递多个数据————指针的应用
- 关于Win32 API的RedrawWindow函数和InvalidateRect函数
- 关于STDLIB.H头文件中的函数应用