ScrollDocHorz method
The document data is horizontally scrolled as indicated by Type and the current scroll position is returned in the variable pointed to by pPosition.
- Method:
- short ScrollDocHorz(
- short Type,
- VARIANT * pPosition )
- 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_LINELEFT ARS_OLE_SCROLL_LINERIGHT ARS_OLE_SCROLL_PAGELEFT ARS_OLE_SCROLL_PAGERIGHT ARS_OLE_SCROLL_LEFT ARS_OLE_SCROLL_RIGHT 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 horizontal 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
- IsDocHorzScrollRequired and ScrollDocVert method
C/C + +
The following example initializes the horizontal scroll bar range, shows or hides the scroll bar after a document is opened or the zoom value is changed, and processes WM_HSCROLL messages. CArsOle * pArsCtrl;
CScrollBar * pHorzScrollBar;
short rc, scroll_code;
VARIANT scroll_position, required;
.
.
// During initialization:
pHorzScrollBar->SetScrollRange( 0, ARS_OLE_SCROLL_RANGE );
pHorzScrollBar->ShowScrollBar( FALSE );
.
.
// After a document is opened or changing the zoom value:
rc = pArsCtrl->IsDocHorzScrollRequired( &required );
if ( rc != ARS_OLE_RC_SUCCESS )
ERROR;
pHorzScrollBar->ShowScrollBar( required.iVal );
.
.
// While processing a WM_HSCROLL message:
scroll_code = (short)LOWORD(wParam);
switch ( scroll_code )
{
case SB_LINELEFT:
scroll_code = ARS_OLE_SCROLL_LINELEFT;
break;
case SB_LINERIGHT:
scroll_code = ARS_OLE_SCROLL_LINERIGHT;
break;
case SB_PAGELEFT:
scroll_code = ARS_OLE_SCROLL_PAGELEFT;
break;
case SB_PAGERIGHT:
scroll_code = ARS_OLE_SCROLL_PAGERIGHT;
break;
case SB_LEFT:
scroll_code = ARS_OLE_SCROLL_LEFT;
break;
case SB_RIGHT:
scroll_code = ARS_OLE_SCROLL_RIGHT;
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->ScrollDocHorz( scroll_code, &scroll_position );
if ( rc != ARS_OLE_RC_SUCCESS )
ERROR;
pHorzScrollBar->SetScrollPos( (int)scroll_position.iVal );
.
.
Visual Basic
Dim rc As Integer
Dim scroll_pos, required As Variant
.
.
' During initialization
sbHorz.Min = 0
sbHorz.Max = ARS_OLE_SCROLL_RANGE
sbHorz.Visible = False
' After a document is opened or changing the zoom value
rc = ArsOle.IsDocHorzScrollRequired (required)
If rc <> ARS_OLE_RC_SUCCESS Then
MsgBox "ERROR"
End
End If
If required <> 0 Then
sbHorz.Visible = True
End If
.
.
' During scroll bar Change method
Private Sub sbHorz_Change()
Dim Diff As Integer
Dim rc As Integer
Dim ScrollCode As Integer
Dim NewPos As Variant
NewPos = 0
Diff = sbHorz.Value - HorzScrollOld
If Diff = sbHorz.LargeChange Then
ScrollCode = ARS_OLE_SCROLL_PAGEDOWN
rc = ArsOle.ScrollDocHorz(ScrollCode, NewPos)
HorzScrollOld = NewPos
sbHorz.Value = NewPos
ElseIf Diff = -sbHorz.LargeChange Then
ScrollCode = ARS_OLE_SCROLL_PAGEUP
rc = ArsOle.ScrollDocHorz(ScrollCode, NewPos)
HorzScrollOld = NewPos
sbHorz.Value = NewPos
ElseIf Diff = sbHorz.SmallChange Then
ScrollCode = ARS_OLE_SCROLL_LINEDOWN
rc = ArsOle.ScrollDocHorz(ScrollCode, NewPos)
HorzScrollOld = NewPos
sbHorz.Value = NewPos
ElseIf Diff = -sbHorz.SmallChange Then
ScrollCode = ARS_OLE_SCROLL_LINEUP
rc = ArsOle.ScrollDocHorz(ScrollCode, NewPos)
HorzScrollOld = NewPos
sbHorz.Value = NewPos
Else
ScrollCode = ARS_OLE_SCROLL_THUMBPOSITION
NewPos = sbHorz.Value
rc = ArsOle.ScrollDocHorz(ScrollCode, NewPos)
HorzScrollOld = sbHorz.Value
End If
End Sub