(1) SetScrollRange
BOOL SetScrollRange(
__in HWND hWnd,
__in int nBar,
__in int nMinPos,
__in int nMaxPos,
__in BOOL bRedraw
);
函数功能:该函数设置所指定滚动条位置的最大最小值。
参数:
hWnd:滚动条控制或带有标准滚动条窗体的句柄,由nBar参数值确定。
nBar:指定滚动条将被设置。这个参数可以是下面值,含义如下:
SB_CTL:设置滚动条控制的范围。而参数hwnd必须是滚动条控制的句柄。
SB_HORZ:设置窗体上标准水平滚动翻页盒的范围。
SB_VERT:设置窗体上标准垂直滚动翻页盒的范围。
nMinPos:指定滚动位置的最小值。
nMaxPos:指定滚动位置的最大值。
bRedraw:指定滚动条是否被重画以反映变化。如果这个参数为TRUE,滚动条将被重化;如果为FALSE则不被重画。
返回值:如果函数运行成功,返回值为非零;如果函数运行失败,返回值为零。若想获得更多的错误信息,请调用GetLastError函数。
注意:
如果调用函数SetScrollPos之后马上调用函数SetScrollRange,则SetScrollPos中的bRedraw参数一定为零,以防止滚动条被画两次。
(2) GetScrollRange函数
函数功能:获取指定滚动条中滚动按钮位置的当前最大最小值。
BOOL GetScrollRange(
__in HWND hWnd,
__in int nBar,
__out LPINT lpMinPos,
__out LPINT lpMaxPos
);
参数:
hWnd:滚动条控制或带标准滚动条窗体的句柄,由nBar参数值确定。
nBar:定滚动条哪一个位置将被找回。这个参数可以是下面值,含义如下:
SB_CTL:找回滚动条控制位置。而参数hWnd必须是滚动条控制的句柄。
SB_HORZ:找回窗体上标准水平滚动条的位置。
SB_VERT:找回窗体上标准垂直滚动条位置。
lpMinPos:指向所找到最小位置整型变量。
lpMaxPos:指向所找到最大位置整型变量。
返回值:如果函数运行成功,返回值为非零;如果函数运行失败,返回值为零。若想获得更多的错误信息,请调用GetLastError函数。
(3) SetScrolllnfo
int SetScrollInfo(
__in HWND hwnd,
__in int fnBar,
__in LPCSCROLLINFO lpsi,
__in BOOL fRedraw
);
函数功能:
函数功能:该函数设置滚动条参数,包括滚动位置的最大值和最小值,页面大小,滚动按钮的位置。如被请求,函数也可以重画滚动条。
参数:
hWnd:滚动条控件或带标准滚动条的窗体句柄,由fnBar参数决定。
fnBar:指定被设定参数的滚动条的类型。这个参数可以是下面值,含义如下:
SB_CTL:设置滚动条控件。而参数hwnd必须是滚动条控件的句柄。
SB_HORZ:设置所给定的窗体上标准水平滚动条参数。
SB_VERT:设置所给定的窗体上标准垂直滚动条参数。
lpsi:指向SCROLLINFO结构。在调用SetScrollInfo之前,设置SCROLLINFO结构中cbSize成员以标识结构大小,设置成员fMask以说明待设置的滚动条参数,并且在适当的成员中制定新的参数值。成员fMask可以为下面所列复合值,含义如下:
typedef struct tagSCROLLINFO
{
UINT cbSize;
UINT fMask;
int nMin;
int nMax;
UINT nPage;
int nPos;
int nTrackPos;
} SCROLLINFO, FAR *LPSCROLLINFO;
SIF_DfSABLENOSCROLL:如果滚动条的新参数使其为没必要,则使滚动条无效而不再移动它。
SIF_PAGE:设置滚动页码值到由Ipsi指向的SCROLLINFO结构的nPage成员中。
SIF_POS:设置滚动位置值到由lpsi指向的SCROLLINFO结构的nPos成员中。
SIF_RANGE:设置滚动范围值到由lpsl指向的SCROLLINFO结构的nMin和nMax成员中。
fRedraw:指定滚动条是否重画以反映滚动条的变化。如果这个参数为TRUE,滚动条将被重画,否则不被重画。
返回值:返回值是滑块的当前位置。
举例:
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) ;
(4)GetScrollInfo
函数功能:滚动条的参数,包括滚动条位置的最小值、最大值,页面大小,滚动按钮的位置。
BOOL GetScrollInfo(
__in HWND hwnd,
__in int fnBar,
__inout LPSCROLLINFO lpsi
);
参数:
hWnd:滚动条控制或有标准滚动条的窗体句柄,由fnBar参数确定。
fnBar:指定待找回滚动条参数的类型,此参数可以为如下值,其值含义:
SB_CTL:找回滚动条控制参数。其中参数hwnd一定是处理滚动条控制的句柄。
SB_HORZ:找回所指定窗体的标准水平滚动条参数。
SB_VERT:找回所指定窗体的标准垂直滚动条参数。
lpsi:指向SCROLLINFO结构。
(5)ShowScrollBar
函数功能:该函数显示或隐藏所指定的滚动条.
BOOL ShowScrollBar(
__in HWND hWnd,
__in int wBar,
__in BOOL bShow
);
参数:
hWnd:根据参数wBar值,处理滚动条控制或带有标准滚动条窗体。
wBar:指定滚动条是被显示还是隐藏。这个参数将是下面值之一,具体含义如下:
SB_BOTH:显示或隐藏窗体的标准的水平或垂直滚动条。
SB_CTL:显示或隐藏滚动条控制。参数hWnd必须是指向滚动条控制的句柄。
SB_HORZ:显示或隐藏窗体的标准的水平滚动条。
SB_VERT:显示或隐藏窗体的标准的垂直滚动条。
bShow:指定滚动条是被显示还是隐藏。此参数为TRUE,滚动条将被显示,否则被隐藏。
返回值:如果函数运行成功,返回值为非零;如果函数运行失败,返回值为零。若想获得更多的错误信息,请调用GetLastError函数。
(6) SetScrollPos
函数功能:该函数设置所指定滚动条中的滚动按钮的位置,如果需要,可重绘滚动条以反映出滚动按钮的新位置。该函数提供了向后兼容性,新的应用程序应使用SetScrolllnfo函数。
int SetScrollPos(
__in HWND hWnd,
__in int nBar,
__in int nPos,
__in BOOL bRedraw
);
hWnd
[输入] 滚动条控件或带有标准滚动条窗体的句柄,由nBar参数值确定
nBar
[输入] 指定滚动条将被设置。这个参数可以是下表值中的一个,含义如下:
值 |
说明 |
SB_CTL |
设置滚动条控件的范围。而参数hwnd必须是滚动条控件的句柄。 |
SB_HORZ |
设置窗体的标准水平滚动条的范围。 |
SB_VERT |
设置窗体的标准垂直滚动条的范围 |
nPos
[输入] 指定滚动按钮的新位置。这个位置必须在滚动范围之内。若要了解更多有关滚动范围的信息,请参见SetScrollRange函数。
bRedraw
[输入] 指定滚动条是否被重画以反映变化。如果这个参数为TRUE,滚动条将被重画;如果为FALSE则不被重画。
如果函数运行成功,其返回值是滚动按钮的前一个位置。
如果函数运行失败,其返回值是0。
若想获得更多的错误信息,请调用GetLastError函数。
(7) GetScrollPos函数
函数功能:
该函数获取指定滚动条中滚动按钮的当前位置。当前位置是一个根据当前滚动范围而定的相对值。例如,如果滚动范围是0到100之间,滚动按钮在中间位置,则其当前位置为50。该函数提供了向后兼容性,新的应用程序应使用GetScrollInfo函数。
int GetScrollPos(
__in HWND hWnd,
__in int nBar
);
参数:
hWnd:根据参数nBar值,处理滚动条控制或带有标准滚动条窗体。
nBar:指定滚动条将被检查。这个参数可以是下面值,含义如下:
SB_CTL:找回滚动条控制中滚动翻页盒的位置。而参数hwnd必须是滚动条控制的句柄。
SB_HORZ:找回窗体上标准水平滚动条中参数滚动翻页盒的位置。
SB_VERT:找回窗体上标准垂直滚动条中参数滚动翻页盒的位置。
返回值:如果函数运行成功,其返回值是滚动翻页盒的当前位置;如果函数运行失败,其返回值是0。想若想获得更多的错误信息,请调用GetLastError函数。
(8) ScrollWindow函数
函数功能:该函数滚动所指定的窗口客户区域内容。函数提供了向后兼容性,新的应用程序应使用ScrollWindowEX。
BOOL ScrollWindow(
__in HWND hWnd,
__in int XAmount,
__in int YAmount,
__in const RECT *lpRect,
__in const RECT *lpClipRect
);
hWnd
[in]客户区域将被滚动的窗口的句柄。
XAmount
[in]指定水平滚动的距离,以设备单位计。如果窗口类风格为CS_OWNDC或CS_CLASSDC,则此参数则使用逻辑单位而非设备单位。当向左滚动窗体内容时,参数值必须为负。
YAmount
[in]指定垂直滚动的距离,以设备单位计。如果窗口类风格为CS_OWNDC或CS_CLASSDC,则此参数则使用逻辑单位而非设备单位。当向上滚动窗体内容时,参数值必须为负。
lpRect
[in]指向RECT结构的指针,该结构指定了将要滚动的客户区范围。若此参数为NULL,则整个客户区域将被滚动。
lpClipRect
[in]指向RECT结构的指针,该结构指定了要滚动的裁剪区域。只有这个矩形中的位才会被滚动。在矩形之外的位不会被影响,即使它们是在lpRect矩形之内。(见代码"测试一")假如lpClipRect为NULL,则不会在滚动矩形上进行裁剪。
返回值:
如果函数运行成功,返回值为非零;如果函数运行失败,返回值为零。若想获得更多的错误信息,请调用GetLastError函数。
(9) ScrollWindowEx函数
int ScrollWindowEx(
__in HWND hWnd,
__in int dx,
__in int dy,
__in const RECT *prcScroll,
__in const RECT *prcClip,
__in HRGN hrgnUpdate,
__out LPRECT prcUpdate,
__in UINT flags
);
参数:
hWnd:客户区域将被滚动的窗体句柄。
dx:在设备单元中,指定水平滚动数量。在向左滚动时此参数必须为负。
dy:在设备单元中,指定垂直滚动数量。在向上滚动时此参数必须为负。
prcScroll:指向RECT结构,它指定了将被滚动的客户区域部分。
prcClip:指向包含了类似于被剪下矩形的RECT结构。只有在剪下内部的小块图形才受影响。从矩形外向内部的滚动部分将被着色;而从内向外的滚动部分将不再被着色。
hrgnUpdate:处理已被修改的区域,保存这些由于滚动而无效的区域。此参数可以为空。
prcUpdate:指向RECT结构,它接收由于滚动使得矩形无效部分的边界。此参数值可以为空。
flags:指定控制滚动的标志。这个参数可以是下面的值:
SW_ERASE:通过发送WM_ERASEBKGND消息给窗体。
SW_INVALIDATE:在滚动后,使得由参数hrgnUpdate标识的无效区域被擦除。
SW_SCROLLCHILDREN:动所有由参数prcScroll指出交叉重叠矩形的子窗体。子窗体按照dx和dy规定的像素个数滚动。系统发送消息给所有由prcScroll指出交叉重叠矩形的子窗体,即使他们不移动。
返回值:如果函数运行成功,返回值为SIMPLEREGION(矩形的无效区域),COMPLEXREGION(非矩形的无效区域)或NULLREGION(没有使无效的区域)如果函数运行成功,返回值为ERROR。若想获得更多的错误信息,请调用GetLastError函数。