win32滚动优化笔记

来源:互联网 发布:单页面淘宝客 编辑:程序博客网 时间:2024/06/02 00:30

内容:
在滚动条原来代码的基础上进行修改:
1、增加结构体:

typedef struct tagSCROLLINFO
{
UINT cbSize ;// 结构体的大小(字节)
UINT fMask ; // values to set or get
int nMin ; // minimum range value
int nMax ; // maximum range value
UINT nPage ; // page size
int nPos ; // current position
int nTrackPos ;// current tracking position
}
SCROLLINFO, * PSCROLLINFO ;

2、在WM_SIZE中对结构体si进行初始化:

      cyClient = HIWORD (lParam) ;      si.cbSize = sizeof (si) ;      si.fMask = SIF_RANGE | SIF_PAGE ;      si.nMin = 0 ;      si.nMax = 99 ;      si.nPage = cyClient / cyChar ;      SetScrollInfo (hwnd, SB_VERT, &si, TRUE) ;      return 0 ;

3、在WM_PAINT中,锁定一个区域进行绘制,并且要对内存进行分配和设置掩码
相关代码:
si.cbSize = sizeof (si) ;
si.fMask = SIF_POS ;
4、
a:在WM_VSCORLL 中要对当前滚动条的位置进行记录
iVertPos = si.nPos ;

 b:增加功能函数           ScrollWindow (hwnd, 0, cyChar * (iVertPos - si.nPos), NULL, NULL) ;      用以对滚动条的比例饿进行优化。

5、获取滚动条和设置滚动条:
SetScrollInfo (hwnd, SB_VERT, &si, TRUE) ;
GetScrollInfo (hwnd, SB_VERT, &si) ;
6:SIF_ALL 旗标是 SIF_RANGE、SIF_POS、SIF_PAGE 和 SIF_TRACKPOS 的组合。

优化后的滚动条的整体框架代码:

include

include

0 0
原创粉丝点击