IsDocHorzScrollRequired method

If the width of the document data exceeds the width of the control window, the result variable is set to a nonzero value; otherwise, to zero.

Method
short IsDocHorzScrollRequired(
VARIANT * pRequired )
Parameters
pRequired
Points to a variable to receive the result. On return, this variable is set to type VT_I2.
Description
The displayed width of the document depends on the inherent width of its data, the type of data (that is, AFP versus Line data), and the zoom factor.
Return Value
Refer to return codes.
See Also
ScrollDocHorz 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