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(
- 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