'====================================================================='
'=    PENAPI.TXT      Windows for Pens - Visual Basic Declarations   ='
'=                                                                   ='
'=                    Copyright (c) 1992-94, Microsoft Corp.         ='
'=                    All rights reserved.                           ='
'=                                                                   ='
'====================================================================='

'====================================================================='
'=   Register Pen Applications                                       ='
'====================================================================='
Declare Function RegisterPenApps Lib "penwin.dll" (ByVal wFlags As Integer, ByVal fRegister As Integer) As Integer
Declare Function IsPenAware Lib "penwin.dll" () As Integer
Declare Function GetVersionPenWin Lib "penwin.dll" () As Integer

'====================================================================='
'=   ALC CODES                                                       ='
'====================================================================='
    ' These constants are used when defining the
    ' CharSet property of HEdits and BEdits
Global Const ALC_ALL = &H43FF
Global Const ALC_DEFAULT = &H0
Global Const ALC_LCALPHA = &H1
Global Const ALC_UCALPHA = &H2
Global Const ALC_ALPHA = &H3
Global Const ALC_NUMERIC = &H4
Global Const ALC_ALPHANUMERIC = &H7
Global Const ALC_PUNC = &H8
Global Const ALC_MATH = &H10
Global Const ALC_MONETARY = &H20
Global Const ALC_OTHER = &H40
Global Const ALC_WHITE = &H100
Global Const ALC_NONPRINT = &H200
Global Const ALC_GESTURE = &H4000
Global Const ALC_USEBITMAP = &H8000
Global Const ALC_DBCS = &H400
Global Const ALC_HIRAGANA = &H100000
Global Const ALC_KATAKANA = &H200000
Global Const ALC_KANJI = &H40000
Global Const ALC_OEM = &HFF80000
Global Const ALC_RESERVED = &H43FF
Global Const ALC_NONPRIORITY = &H0
Global Const ALC_SYSMINIMUM = (ALC_ALPHANUMERIC Or ALC_WHITE Or ALC_GESTURE)

'====================================================================='
'=   Point and Rectangle Structures                                  ='
'====================================================================='
Type POINTSHORT
    x As Integer
    y As Integer
End Type

Type RECTSHORT
    left As Integer
    top As Integer
    right As Integer
    bottom As Integer
End Type

'====================================================================='
'=   Maniplating Pen Data                                            ='
'====================================================================='
Type PENDATAHEADER
    wVersion As Integer         ' Pen Data format Version
    cbSizeUsed As Integer       ' Size of Pen data memory block
    cStrokes As Integer         ' Number of strokes
    cPnt As Integer             ' Total number of points
    cPntStrokeMax As Integer    ' Length of longest stroke in points
    rectBound As RECTSHORT      ' Coordinates of bounding rectangle
    wPndts As Integer           ' State of various PDTS_??? bits
    nInkWidth As Integer        ' Ink Width
    rgbInk As Long              ' Ink Color
End Type

Global Const PDTS_LOMETRIC = &H0        ' Each logical unit is mapped to 0.01mm. Positive X to right; Positive Y down.
Global Const PDTS_HIMETRIC = &H1        ' Logical mapped to 0.001mm. X+ to right; Y+ down
Global Const PDTS_HIENGLISH = &H2       ' Logical mapped to 0.001 inch. X+ to right; y+ is down
Global Const PDTS_SCALEMAX = &H3        ' Maximum scaling allowed
Global Const PDTS_DISPLAY = &H4         ' Logical mapped to display pixel.  X+ to right; Y+ is down
Global Const PDTS_ARBITRARY = &H5       ' Arbitrary scale, application dependent
Global Const PDTS_SCALEMASK = &HF       ' Mask for bits of scale
Global Const PDTS_STANDARDSCALE = PDTS_HIENGLISH

Global Const PDTS_NOPENINFO = &H100         ' No PENINFO structure
Global Const PDTS_NOUPPOINTS = &H200        ' The data points on pen up have been removed
Global Const PDTS_NOOEMDATA = &H400         ' No OEM data present
Global Const PDTS_NOCOLINEAR = &H800
Global Const PDTS_COMPRESSED = &H8000       ' The data is compressed
Global Const PDTS_COMPRESSMETHOD = &HF0     ' Bits have been saved to encode which compression scheme was used
Global Const PDTS_COMPRESS2NDDERIV = &H10   ' The second derivative betwen points is stored

Global Const PDTT_DEFAULT = &H0                 ' reallocates memory block to fit data.  Should be run before GlobalSize(hpendata) is taken
Global Const PDTT_PENINFO = PDTS_NOPENINFO      ' removes PenInfo from the header
Global Const PDTT_UPPOINTS = PDTS_NOUPPOINTS    ' Throws away all data from points collected when pen is not in contact with the tablet.
Global Const PDTT_OEMDATA = PDTS_NOOEMDATA      ' Removes All OEM Data that is not x,y (such as presure and angle)
Global Const PDTT_COLINEAR = PDTS_NOCOLINEAR    ' Removes successive idetical points and colinear points from pendata
Global Const PDTT_COMPRESS = PDTS_COMPRESSED    ' Compresses data without loss of any information.
Global Const PDTT_DECOMPRESS = &H4000           ' Decompresses Data.  Cannot be used in conjunction with other timing options.
Global Const PDTT_ALL = (PDTT_PENINFO Or PDTT_UPPOINTS Or PDTT_OEMDATA Or PDTT_COLINEAR)

Global Const MAXOEMDATAWORDS = 6

Type STROKEINFO
    cPnts As Integer        ' Count of points in stroke
    cbPnts As Integer       ' Count of bytes used for stroke
    wPdk As Integer         ' State of stroke
    dwTick As Long          ' Time of stroke
End Type

Type OEMPENINFO
    wPdts As Integer
    wValMax As Integer
    wDistinct As Integer
End Type

Type PENINFO
    cxRawWidth As Integer           ' Max x & width of tablet in 0.01 of inch
    cyRawHeight As Integer          ' Max y & height of tablet " " " "
    wDistinctWidth As Integer       ' Num of distinct X values returned by tablet
    wDistinctHieght As Integer      ' Num of distinct Y values returned by tablet
    nSamplingRate As Integer        ' Samples/second
    nSamplingDist As Integer        ' Minimum distance moved in either direction
    lPdc As Long                    ' Pen Device capabilities
    cbOemData As Integer            ' Width of OEM Packet
    rgoempeninfo(1 To MAXOEMDATAWORDS) As OEMPENINFO
    rgwReserved(1 To 8) As Integer
End Type

Global Const PDT_NULL = 0
Global Const PDT_PRESSURE = 1
Global Const PDT_HEIGHT = 2
Global Const PDT_ANGLEXY = 3
Global Const PDT_ANGLEZ = 4
Global Const PDT_BARRELROTATION = 5
Global Const PDT_OEMSPECIFIC = 16

Global Const PDC_INTEGRATED = &H1
Global Const PDC_PROXIMITY = &H2
Global Const PDC_RANGE = &H4
Global Const PDC_INVERT = &H8
Global Const PDC_RELATIVE = &H10
Global Const PDC_BARREL1 = &H20
Global Const PDC_BARREL2 = &H40
Global Const PDC_BARREL3 = &H80

Declare Function DuplicatePenData Lib "penwin.dll" (ByVal hPenData As Integer, ByVal gMemFlags As Integer) As Integer
Declare Function CompactPenData Lib "penwin.dll" (ByVal hPenData As Integer, ByVal wTrimOptions As Integer) As Integer
Declare Function BeginEnumStrokes Lib "penwin.dll" (ByVal hPenData As Integer) As Long
Declare Function GetPenDataInfo Lib "penwin.dll" (ByVal hPenData As Integer, lppendataheader As PENDATAHEADER, lppeninfo As Any, ByVal dwReserve As Long) As Integer
Declare Function GetPenDataStroke Lib "penwin.dll" (ByVal lppendata As Long, ByVal wStroke As Integer, lplpPoint As Any, lplpvOem As Any, lpsi As STROKEINFO) As Integer
Declare Function GetPointsFromPenData Lib "penwin.dll" (ByVal hPenData As Integer, ByVal wStroke As Integer, ByVal wPnts As Integer, ByVal cPnts As Integer, lppoint As Any) As Integer
Declare Function AddPointsPenData Lib "penwin.dll" (ByVal hPenData As Integer, lpPnt As Any, lpvOemData As Any, lpsiNew As Any) As Integer

'====================================================================='
'=   Symbol Graph Structures                                         ='
'====================================================================='
Global Const MAXHOTSPOT = 8

'=== Symbol Character array =========================================='
Type SYC
    wStrokeFirst As Integer
    wPntFirst As Integer
    wStrokeLast As Integer
    wPntLast As Integer
    fLastSyc As Integer
End Type

'=== Symbol Graph element ============================================'
Type SYG
    rgpntHotSpotsArray(1 To MAXHOTSPOT) As POINTSHORT
    cHotSpot As Integer
    nFirstBox As Integer
    lRecogVal As Long
    lpSye As Long
    cSye As Integer
    lpSyc As Long
    cSyc As Integer
End Type

'=== Symbol Element =================================================='
Type SYE
    Syv As Long
    lRecogVal As Long
    cl As Integer
    iSyc As Integer
End Type

'=== SYV values with special meanings to Windows For Pens
Global Const SYV_NULL = &H0
Global Const SYV_UNKNOWN = &H1
Global Const SYV_EMPTY = &H3
Global Const SYV_BEGINOR = &H10
Global Const SYV_ENDOR = &H11
Global Const SYV_OR = &H12
Global Const SYV_SOFTNEWLINE = &H20
Global Const SYV_SPACENULL = &H10000

'=== SYV values for gestures
Global Const SYV_CLEAR = &H2FFD5
Global Const SYV_EXTENDSELECT = &H2FFD8
Global Const SYV_UNDO = &H2FFD9
Global Const SYV_COPY = &H2FFDA
Global Const SYV_CUT = &H2FFDB
Global Const SYV_PASTE = &H2FFDC
Global Const SYV_CLEARWORD = &H2FFDD
Global Const SYV_USER = &H2FFDE
Global Const SYV_CORRECT = &H2FFDF
Global Const SYV_BACKSPACE = &H20008
Global Const SYV_TAB = &H20009
Global Const SYV_RETURN = &H2000D
Global Const SYV_SPACE = &H20020

'=== Application Specific gestures circle a-z and circle A-Z
Global Const SYV_APPGESTUREMASK = &H20000
Global Const SYV_CIRCLEUPA = &H224B6
Global Const SYV_CIRCLEUPZ = &H224CF
Global Const SYV_CIRCLELOA = &H224D0
Global Const SYV_CIRCLELOZ = &H224E9

'=== SYV for Shapes (if recognizer installed)
Global Const SYV_SHAPELINE = &H40001
Global Const SYV_SHAPEELLIPSE = &H40002
Global Const SYV_SHAPERECT = &H40003
Global Const SYV_SHAPEMIN = SYV_SHAPELINE
Global Const SYV_SHAPEMAX = SYV_SHAPERECT

'=== To detect if SYV is a particular type, let SyvHi=(syv\&H10000)
'=== Compare SyvHi with below
Global Const SYVHI_SPECIAL = 0
Global Const SYVHI_ANSI = 1
Global Const SYVHI_GESTURE = 2
Global Const SYVHI_KANJI = 3
Global Const SYVHI_SHAPE = 4
Global Const SYVHI_UNICODE = 5
Global Const SYVHI_VKEY = 6

'====================================================================='
'=   RcResult Structures                                             ='
'====================================================================='
Type RCRESULT
    SYGraph As SYG
    wResultsType As Integer
    cSyv As Integer
    lpsyv As Long
    hSyv As Integer
    nBaseLine As Integer
    nMidLine As Integer
    hPenData As Integer
    rectboundink As RECTSHORT
    pntEnd As POINTSHORT
    lprc As Long
End Type

Global Const RCRT_DEFAULT = &H0
Global Const RCRT_UNIDENTIFIED = &H1
Global Const RCRT_GESTURE = &H2
Global Const RCRT_NOSYMBOLMATCH = &H3
Global Const RCRT_PRIVATE = &H4000
Global Const RCRT_NORECOG = &H8000
Global Const RCRT_ALREADYPROCESSED = &H8
Global Const RCRT_GESTURETRANSLATED = &H10
Global Const RCRT_GESTURETOKEYS = &H20

Declare Function GetSymbolMaxLength Lib "penwin.dll" (lpsyg As Any) As Integer
Declare Function GetSymbolCount Lib "penwin.dll" (lpsyg As Any) As Integer
Declare Function SymbolToCharacter Lib "penwin.dll" (lpsyv As Any, ByVal cSyv As Any, ByVal lpstr As String, lpnCnvt As Any)

'====================================================================='
'=   RC (Recognition Context) Definitions                            ='
'====================================================================='
Global Const CL_NULL = 0
Global Const CL_MINIMUM = 1
Global Const CL_MAXIMUM = 100
Global Const INKWIDTH_MINIMUM = 0
Global Const INKWIDTH_MAXIMUM = 15
Global Const ENUM_MINIMUM = 1
Global Const ENUM_MAXIMUM = 4096
Global Const MAXDICTIONARIES = 16

Type GUIDE
    xOrigin As Integer
    yOrigin As Integer
    cxBox As Integer
    cyBox As Integer
    cxBase  As Integer
    cyBase As Integer
    cHorzBox  As Integer
    cVertBox  As Integer
    cyMid As Integer
End Type

Global Const cbRcLanguageMax = 44
Global Const cbRcUserMax = 32
Global Const cbRcrgbfAlcMax = 32
Global Const cwRcReservedMax = 8

Type RC              ' Provided for Backward Compatibility Only
    hRec As Integer
    hWnd As Integer
    wEventRef As Integer
    wRcPreferences As Integer
    lRcOptions As Long
    lpfnYield As Long
    lpUser As String * cbRcUserMax
    wCountry As Integer
    wIntlPreferences As Integer
    lpLanguage As String * cbRcLanguageMax
    rglpdf(1 To MAXDICTIONARIES) As Long
    wTryDictinary As Integer
    clErrorLevel As Integer
    alc As Long
    alcPriority As Long
    rgbfAlc As String * cbRcrgbfAlcMax
    wResultMode As Integer
    wTimeOut As Integer
    lPcm As Long
    rectBound As RECTSHORT
    rectExclude As RECTSHORT
    guid As GUIDE
    wRcOrient As Integer
    wRcDirect As Integer
    nInkWidth As Integer
    rgbInk As Long
    dwAppParam As Long
    dwDictParam As Long
    dwRecognizer As Long
    rgwReserved(1 To cwRcReservedMax) As Integer
End Type

Declare Function InitRc Lib "penwin.dll" (ByVal hWnd As Integer, lpSrc As RC) As Integer
Declare Function InstallRecognizer Lib "penwin.dll" (ByVal lpszRecogName As String) As Integer
Declare Function UnInstallRecognizer Lib "penwin.dll" (ByVal hRec As Integer) As Integer
Declare Function GetGlobalRC Lib "penwin.dll" (lprc As Any, ByVal lpDefRecog As String, ByVal lpDefRecog As String, ByVal cbDefDictMax As Integer) As Integer
Declare Function SetGlobalRC Lib "penwin.dll" (lprc As Any, ByVal lpDefRecog As String, ByVal lpDefDict As String) As Integer

Global Const GGRC_OK = 0
Global Const GGRC_DICTBUFTOOSMALL = 1
Global Const GGRC_PARAMERROR = 2
Global Const SGRC_OK = &H0
Global Const SGRC_USER = &H1
Global Const SGRC_PARAMERROR = &H2
Global Const SGRC_RC = &H4
Global Const SGRC_RECOGNIZER = &H8
Global Const SGRC_DICTIONARY = &H10
Global Const SGRC_INIFILE = &H20

'====================================================================='
'=   Training And Correcting                                         ='
'====================================================================='
Declare Function TrainInk Lib "penwin.dll" (lprc As RC, ByVal hPenData As Integer, lpsyv As Any) As Integer
Declare Function TrainContext Lib "penwin.dll" (lprcResult As RC, lpSye As Any, ByVal cSye As Integer, lpSyc As Any, ByVal cSyc As Integer) As Integer
Declare Function CorrectWriting Lib "penwin.dll" (ByVal hWnd As Integer, ByVal lpstr As String, ByVal cBuf As Integer, lprc As RC, ByVal dwCwrFlags As Any, ByVal dwReserved As Any) As Integer

Global Const CWR_STRIPCR = &H1
Global Const CWR_STRIPLF = &H2
Global Const CWR_STRIPTAB = &H4
Global Const CWR_SINGLELINEEDIT = &H7
Global Const CWR_TITLE = &H10

'====================================================================='
'=   Other Windows For Pens API's                                    ='
'====================================================================='
Declare Function BoundingRectFromPoints Lib "penwin.dll" (lpPnt As Any, ByVal cPnt, lprectBound As RECTSHORT) As Integer
Declare Function TPtoDP Lib "penwin.dll" (lpPnts As Any, ByVal cPnts As Integer) As Integer
Declare Function DPtoTP Lib "penwin.dll" (lpPnts As Any, ByVal cPnts As Integer) As Integer
Declare Function DrawPenData Lib "penwin.dll" (ByVal hDC As Integer, lpRect As RECTSHORT, ByVal hPenData As Integer) As Integer
Declare Function MetricScalePenData Lib "penwin.dll" (ByVal hPenData As Integer, ByVal wPdts) As Integer
Declare Function OffsetPenData Lib "penwin.dll" (ByVal hPenData As Integer, ByVal dx As Integer, ByVal dy As Integer) As Integer
Declare Function RecognizePenData Lib "penwin.dll" (lprc As RC, ByVal hPenData As Integer) As Integer
Declare Function CreatePenData Lib "penwin.dll" (lppenifo As PENINFO, ByVal cbOemData As Integer, ByVal wPdtScal As Integer, ByVal gMemFlags As Integer) As Integer
Declare Function ExecuteGesture Lib "penwin.dll" (ByVal hWnd As Integer, ByVal Syv As Long, lprcResult As RC)

'=== Message Routines Constants ======================================'
Global Const WM_PENWINFIRST = &H380                'Main Offset for Pen messages
Global Const WM_RCRESULT = WM_PENWINFIRST + 1
Global Const WM_HOOKRCRESULT = WM_PENWINFIRST + 2
Global Const WM_GLOBALRCCHANGE = WM_PENWINFIRST + 3
Global Const WM_SKB = WM_PENWINFIRST + 4
Global Const WM_HEDITCTL = WM_PENWINFIRST + 5      'Configures HEdits and BEdits

'== The constants below are used as wParam with WM_HEDITCTL message
Global Const HE_GETRC = 3
Global Const HE_SETRC = 4
Global Const HE_GETINFLATE = 5
Global Const HE_SETINFLATE = 6
Global Const HE_GETUNDERLINE = 7
Global Const HE_SETUNDERLINE = 8
Global Const HE_GETINKHANDLE = 9
Global Const HE_SETINKMODE = 10
Global Const HE_STOPINKMODE = 11
Global Const HE_GETRCRESULTCODE = 12
Global Const HE_DEFAULTFONT = 13
Global Const HE_CHARPOSITION = 14
Global Const HE_CHAROFFSET = 15
Global Const HE_GETRCRESULT = 22

'====================================================================='
'=   END WINDOWS FOR PENS API                                        ='
'====================================================================='

'====================================================================='
'=  PENCNTRL.VBX Constants and Function Declarations                 ='
'====================================================================='

'==  Property Settings  =============================================='
' AutoSize Property: IEdit control
Global Const PEN_AUTOSIZE_NONE = 0           ' No AutoSizing occurs
Global Const PEN_AUTOSIZE_STRETCHBITMAP = 1  ' Stretch Bitmap to fit Window
Global Const PEN_AUTOSIZE_SIZEWINDOW = 2     ' Size Window to fit Bitmap
Global Const PEN_AUTOSIZE_TILE = 3           ' Tile Bitmap
Global Const PEN_AUTOSIZE_CENTER = 4         ' Center Bitmap

' BorderStyle Property: BEdit, HEdit, and IEdit controls
Global Const PEN_BORDERSTYLE_NONE = 0      ' No Border
Global Const PEN_BORDERSTYLE_SINGLE = 1    ' Single Line Border
Global Const PEN_BORDERSTYLE_UNDERLINE = 2 ' Underline: Valid for HEdit only

' BoxCross Property: BEdit control only
Global Const PEN_BOXCROSS_OFF = 0          ' BoxCross not displayed
Global Const PEN_BOXCROSS_ON = 1           ' BoxCross displayed

' CombStyle Property: BEdit control only
Global Const PEN_COMBSTYLE_COMB = 0        ' Comb Style
Global Const PEN_COMBSTYLE_BOX = 1         ' Box Style

' FormatAttrb Property: IEdit control only
Global Const PEN_FORMATATTRB_COLOR = 0     ' Set Stroke Color
Global Const PEN_FORMATATTRB_WIDTH = 1     ' Set Stroke Width
Global Const PEN_FORMATATTRB_BOTH = 2      ' Set both Stroke Color & Width

' FormatItem Property: IEdit control only
Global Const PEN_FORMATITEM_ALL = 0        ' Set Attributes for All Strokes
Global Const PEN_FORMATITEM_SELECTION = 1  ' Set Attributes for Selected Strokes
Global Const PEN_FORMATITEM_INDEX = 2      ' Set Attributes for Stroke specified by StrokeIndex

' GestureSet Property: BEdit and HEdit controls
Global Const PEN_GESTURESET_SELECTION = &H1      ' Selection and Lasso
Global Const PEN_GESTURESET_CLIPBOARD = &H2      ' Cut, Copy, Paste
Global Const PEN_GESTURESET_WHITECHARS = &H4     ' Space, Tab, Return
Global Const PEN_GESTURESET_EDIT = &H10          ' Insert, Correct, Undo
Global Const PEN_GESTURESET_CIRCLELOWER = &H100  ' Lowercase Circle Gestures
Global Const PEN_GESTURESET_CIRCLEUPPER = &H200  ' Uppercase Circle Gestures

' hInkGet/hInkSet Properties: IEdit control only
Global Const PEN_HINKGET_ALL = 0           ' Get all the Ink in the IEdit
Global Const PEN_HINKGET_SELECTION = 1     ' Get only the selected Ink

' InkDataMode Property: BEdit, HEdit, and IEdit controls
Global Const PEN_INKDATAMODE_REPLACE = 0   ' Existing Ink is replaced when new Ink is assigned to InkDataString
Global Const PEN_INKDATAMODE_APPEND = 1    ' New ink is appended to existing Ink

' InkingMode Property: IEdit control only
Global Const PEN_INKINGMODE_READY = 0      ' Ready Mode
Global Const PEN_INKINGMODE_ERASE = 1      ' Erasing Mode for erasing Ink
Global Const PEN_INKINGMODE_LASSO = 2      ' Lasso Selection Mode

' InkInput Property: IEdit control only
Global Const PEN_INKINPUT_MOVE = 1         ' Ink will be Moved into IEdit
Global Const PEN_INKINPUT_RESIZE = 2       ' Ink will be Resized to fit in IEdit
Global Const PEN_INKINPUT_CROP = 4         ' Ink drawn outside IEdit will be cropped
Global Const PEN_INKINPUT_DISCARD = 8      ' Ink will be discarded if any part of stroke is outside of IEdit

' InkWidth Property: BEdit, HEdit, and IEdit controls
Global Const PEN_INKWIDTH_DEFAULT = -1     ' Use system default Ink Width
Global Const PEN_INKWIDTH_MIN = 0          ' Minimum Valid size; no Ink is displayed
Global Const PEN_INKWIDTH_MAX = 15         ' Maximum Valid Ink Width (in Pixels)

' Recog Property: IEdit control only
Global Const PEN_RECOG_NONE = 0            ' No Recognition
Global Const PEN_RECOG_GESTURES = 1        ' Recognize Gestures Only
Global Const PEN_RECOG_ALL = 2             ' Recognize All

' ScrollBars Property: BEdit and HEdit controls
Global Const PEN_SCROLLBARS_NONE = 0        ' No ScrollBars
Global Const PEN_SCROLLBARS_HORIZONTAL = 1  ' Horizontal ScrollBar: Not Valid for BEdit
Global Const PEN_SCROLLBARS_VERTICAL = 2    ' Vertical ScrollBar
Global Const PEN_SCROLLBARS_BOTH = 3        ' Both ScrollBars: Valid for HEdit only

' Security Property: IEdit control only
Global Const PEN_SECURITY_NOCOPY = &H1      ' Disable Copying Ink
Global Const PEN_SECURITY_NOCUT = &H2       ' Disable Cutting Ink
Global Const PEN_SECURITY_NOPASTE = &H4     ' Disable Pasting Ink
Global Const PEN_SECURITY_NOUNDO = &H8      ' Disable Undo action
Global Const PEN_SECURITY_NOINK = &H10      ' Disable Inking
Global Const PEN_SECURITY_NOERASE = &H20    ' Disable Erasing Ink
Global Const PEN_SECURITY_NOGET = &H40      ' Disable reading hInk property
Global Const PEN_SECURITY_NOSET = &H80      ' Disable writing hInk property

'==  Trappable Error Strings  ========================================'
Global Const PENERR_INKWIDTH = 32001        ' InkWidth must be in range 0-15 or -1 for default
Global Const PENERR_NEGCELLWIDTH = 32002    ' CellWidth must be greater than 0
Global Const PENERR_CELLWIDTH = 32003       ' CellWidth must be greater than or equal to CombSpacing*2
Global Const PENERR_NEGCELLHEIGHT = 32004   ' CellHeight must be greater than 0
Global Const PENERR_CELLHEIGHT = 32005      ' CellHeight must be greater than or equal to CombBaseLine
Global Const PENERR_COMBSPACING = 32006     ' CombSpacing out of range (0 - CellWidth/2)
Global Const PENERR_COMBBASELINE = 32007    ' CombBaseLine out of range (0 - CellHeight)
Global Const PENERR_BIGCOMBBASELINE = 32008 ' CombBaseLine must be greater than or equal to CombHeight and CombEndHeight
Global Const PENERR_COMBHEIGHT = 32009      ' CombHeight out of range (0 - CombBaseLine)
Global Const PENERR_COMBENDHEIGHT = 32010   ' CombEndHeight our of range (0 - CombBaseLine)
Global Const PENERR_INFLATE = 32011         ' Inflate value must be greater than or equal to 0
Global Const PENERR_INVALIDPICTURE = 32012  ' Picture format not supported
Global Const PENERR_DISPLAYFAILED = 32013   ' Unable to display bitmap
Global Const PENERR_AUTOSIZEHW = 32014      ' Cannot change Height or Width while AutoSize equals 2
Global Const PENERR_MERGEFAILED = 32015     ' Unable to merge ink data
Global Const PENERR_INVALIDINKDATA = 32016  ' Invalid InkDataString format

'==  Functions Declarations  ========================================='
Declare Sub VBTypeToCPointer Lib "pencntrl.vbx" (lpSrc As Any, ByVal lpDest As Long, ByVal cb As Integer)
Declare Sub CPointerToVBType Lib "pencntrl.vbx" (ByVal lpSrc As Long, lpDest As Any, ByVal cb As Integer)
'====================================================================='
