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