==== VioGetCurType ====
**Bindings**: [[getcurtype#C bindings|C]], [[getcurtype#MASM bindings|MASM]]
This call returns the cursor type. 
//VioGetCurType// (CursorData, VioHandle) 
//CursorData// (**PVIOCURSORINFO**) - output 
Address of the cursor characteristics structure: 
//startline// (**USHORT**) 
Horizontal scan line in the character cell that marks the top line of the cursor. If the character cell has n scan lines, 0 is the top scan line of the character cell and (n-1) is the bottom scan line. 
//endline// (**USHORT**) 
Horizontal scan line in the character cell that marks the bottom line of the cursor. Scan lines within a character cell are numbered as defined in startline. 
//cursorwidth// (**USHORT**) 
Width of the cursor. In text modes, //cursorwidth// is the number of columns. The maximum number supported by the OS/2 base video subsystem is 1. In graphics modes, //cursorwidth// is the number of pels. 
//cursorattrib// (**USHORT**) 
A value of -1 denotes a hidden cursor, all other values in text mode denote normal cursor and in graphics mode denote color attribute. 
//VioHandle// (HVIO) - input 
This must be zero unless the caller is a Presentation Manager application, in which case it must be the value returned by [[en:ibm:prcp:vio:getps|VioGetPs]]. 
//rc// (**USHORT**) - return 
Return code descriptions are: 
|0 |NO_ERROR |
|355 |ERROR_VIO_MODE |
|436 |ERROR_VIO_INVALID_HANDLE |
|465 |ERROR_VIO_DETACHED |
**Remarks** 
If //CursorStartLine// and //CursorEndLine// were originally specified as percentages on [[en:ibm:prcp:vio:setcurtype|VioSetCurType]] (using negative values), the positive values into which they were translated are returned. Refer to [[en:ibm:prcp:vio:setcurtype|VioSetCurType]] for more information on how percentages can be used to set //CursorStartLine// and //CursorEndLine// independent of the number of scan lines per character cell. 
**Family API Considerations** 
In DOS mode, [[en:ibm:prcp:vio:getcurtype|VioGetCurType]] returns only two values for cursorattrib: 0 = visible cursor, and -1 = hidden cursor. 
=== C bindings ===
typedef struct _VIOCURSORINFO {  /* vioci */
  USHORT   yStart;               /*cursor start line */
  USHORT   cEnd;                 /* cursor end line */
  USHORT   cx;                   /* cursor width */
  USHORT   attr;                 /* -1=hidden cursor, any other=normal
                                       cursor */
} VIOCURSORINFO;
#define INCL_VIO
USHORT  rc = VioGetCurType(CursorData, VioHandle);
PVIOCURSORINFO   CursorData;    /* Cursor characteristics */
HVIO             VioHandle;     /* Vio handle */
USHORT           rc;            /* return code */
=== MASM bindings ===
VIOCURSORINFO struc
  vioci_yStart dw  ? ;cursor start line
  vioci_cEnd   dw  ? ;cursor end line
  vioci_cx     dw  ? ;cursor width
  vioci_attr   dw  ? ;-1=hidden cursor, any other=normal cursor
VIOCURSORINFO ends
EXTRN  VioGetCurType:FAR
INCL_VIO            EQU 1
PUSH@  OTHER   CursorData    ;Cursor characteristics
PUSH   WORD    VioHandle     ;Vio handle
CALL   VioGetCurType
Returns WORD