MFC---之对话框滚动条的使用

 

(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函数。

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值