ScrollDocVert method
The document data is vertically scrolled as indicated by Type and the current scroll position is returned in the variable pointed to by pPosition.
- Method
- short ScrollDocVert(
- Parameters
- Type
- Specifies a scroll bar code that identifies the type of scrolling
required. This must be one of the following scroll types found in ARSOLEEX.H:
ARS_OLE_SCROLL_LINEUP ARS_OLE_SCROLL_LINEDOWN ARS_OLE_SCROLL_PAGEUP ARS_OLE_SCROLL_PAGEDOWN ARS_OLE_SCROLL_TOP ARS_OLE_SCROLL_BOTTOM ARS_OLE_SCROLL_THUMBPOSITION ARS_OLE_SCROLL_THUMBTRACK ARS_OLE_SCROLL_ENDSCROLL
- pPosition
- Points to a variable that contains and/or will contain the scroll position. When Type is ARS_OLE_SCROLL_THUMBPOSITION or ARS_OLE_SCROLL_THUMBTRACK, the variable must contain the position to which to scroll. For all types, on return this variable contains the current scroll position. This variable should be set to type VT_I2.
- Description
- On input and on return, the position value assumes that the vertical scroll range has been set to ARS_OLE_SCROLL_RANGE. If a different value is used, the units should be converted before and after the call.
- Return Value
- Refer to return codes.
- See Also
- ScrollDocHorz method
C/C + +
The following example initializes the vertical scroll bar range and processes WM_VSCROLL messages. CArsOle * pArsCtrl;
CScrollBar * pVertScrollBar;
short rc, scroll_code;
VARIANT scroll_position;
.
.
// During initialization:
pVertScrollBar->SetScrollRange( 0, ARS_OLE_SCROLL_RANGE );
pVertScrollBar->ShowScrollBar( TRUE );
// While processing a WM_VSCROLL message:
scroll_code = (short)LOWORD(wParam);
switch ( scroll_code )
{
case SB_LINEUP:
scroll_code = ARS_OLE_SCROLL_LINEUP;
break;
case SB_LINEDOWN:
scroll_code = ARS_OLE_SCROLL_LINEDOWN;
break;
case SB_PAGEUP:
scroll_code = ARS_OLE_SCROLL_PAGEUP;
break;
case SB_PAGEDOWN:
scroll_code = ARS_OLE_SCROLL_PAGEDOWN;
break;
case SB_TOP:
scroll_code = ARS_OLE_SCROLL_TOP;
break;
case SB_BOTTOM:
scroll_code = ARS_OLE_SCROLL_BOTTOM;
break;
case SB_THUMBPOSITION:
scroll_code = ARS_OLE_SCROLL_THUMBPOSITION;
break;
case SB_THUMBTRACK:
scroll_code = ARS_OLE_SCROLL_THUMBTRACK;
break;
default:
scroll_code = ARS_OLE_SCROLL_ENDSCROLL;
}
.
.
.
.
if ( scroll_code == (short)ARS_OLE_SCROLL_THUMBPOSITION ||
scroll_code == (short)ARS_OLE_SCROLL_THUMBTRACK )
{
scroll_position.vt = VT_I2;
scroll_position.iVal = (short)HIWORD(wParam);
}
rc = pArsCtrl->ScrollDocVert( scroll_code, &scroll_position );
if ( rc != ARS_OLE_RC_SUCCESS )
ERROR;
pVertScrollBar->SetScrollPos( (int)scroll_position.iVal );
.
.
Visual Basic
Dim rc As Integer
Dim scroll_pos, required As Variant
.
.
' During initialization
sbVert.Min = 0
sbVert.Max = ARS_OLE_SCROLL_RANGE
sbVert.Visible = True
.
.
' During scroll bar Change method
Private Sub sbVert_Change()
Dim Diff As Integer
Dim rc As Integer
Dim ScrollCode As Integer
Dim NewPos As Variant
NewPos = 0
Diff = sbVert.Value - VertScrollOld
If Diff = sbVert.LargeChange Then
ScrollCode = ARS_OLE_SCROLL_PAGEDOWN
rc = ArsOle.ScrollDocVert(ScrollCode, NewPos)
VertScrollOld = NewPos
sbVert.Value = NewPos
ElseIf Diff = -sbVert.LargeChange Then
ScrollCode = ARS_OLE_SCROLL_PAGEUP
rc = ArsOle.ScrollDocVert(ScrollCode, NewPos)
VertScrollOld = NewPos
sbVert.Value = NewPos
ElseIf Diff = sbVert.SmallChange Then
ScrollCode = ARS_OLE_SCROLL_LINEDOWN
rc = ArsOle.ScrollDocVert(ScrollCode, NewPos)
VertScrollOld = NewPos
sbVert.Value = NewPos
ElseIf Diff = -sbVert.SmallChange Then
ScrollCode = ARS_OLE_SCROLL_LINEUP
rc = ArsOle.ScrollDocVert(ScrollCode, NewPos)
VertScrollOld = NewPos
sbVert.Value = NewPos
Else
ScrollCode = ARS_OLE_SCROLL_THUMBPOSITION
NewPos = sbVert.Value
rc = ArsOle.ScrollDocVert(ScrollCode, NewPos)
VertScrollOld = sbVert.Value
End If
End Sub