home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World Plus! (NZ) 2001 June
/
HDC50.iso
/
Runimage
/
Delphi50
/
Source
/
Rtl
/
Win
/
PENWIN.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1999-08-11
|
139KB
|
3,401 lines
{*******************************************************}
{ }
{ Borland Delphi Run-time Library }
{ Win32 Pen API Interface Unit }
{ }
{ Copyright (c) 1985-1999, Microsoft Corporation }
{ }
{ Translator: Inprise Corporation }
{ }
{*******************************************************}
unit PenWin;
{$WEAKPACKAGEUNIT}
{ Pen Windows functions, types, and definitions }
{ "FBC" in the comments means that the feature exists only for
backward compatibility. It should not be used by new applications. }
interface
uses Windows, Messages, MMSystem;
{ Enabled Alphabet: }
const
ALC_DEFAULT = $00000000; { nothing }
{$EXTERNALSYM ALC_DEFAULT}
ALC_LCALPHA = $00000001; { a..z }
{$EXTERNALSYM ALC_LCALPHA}
ALC_UCALPHA = $00000002; { A..Z }
{$EXTERNALSYM ALC_UCALPHA}
ALC_NUMERIC = $00000004; { 0..9 }
{$EXTERNALSYM ALC_NUMERIC}
ALC_PUNC = $00000008; { !-;`"?()&.,; and backslash }
{$EXTERNALSYM ALC_PUNC}
ALC_MATH = $00000010; // %^*()-+={}<>,/.
{$EXTERNALSYM ALC_MATH}
ALC_MONETARY = $00000020; { ,.$ or local }
{$EXTERNALSYM ALC_MONETARY}
ALC_OTHER = $00000040; { @#|_~[] }
{$EXTERNALSYM ALC_OTHER}
ALC_ASCII = $00000080; { restrict to 7-bit chars 20..7f }
{$EXTERNALSYM ALC_ASCII}
ALC_WHITE = $00000100; { white space }
{$EXTERNALSYM ALC_WHITE}
ALC_NONPRINT = $00000200; { sp tab ret ctrl glyphs }
{$EXTERNALSYM ALC_NONPRINT}
ALC_DBCS = $00000400; { allow DBCS variety of SBCS }
{$EXTERNALSYM ALC_DBCS}
ALC_JIS1 = $00000800; { kanji JPN, ShiftJIS 1 only }
{$EXTERNALSYM ALC_JIS1}
ALC_GESTURE = $00004000; { gestures }
{$EXTERNALSYM ALC_GESTURE}
ALC_USEBITMAP = $00008000; { use rc.rgbfAlc to enable chars }
{$EXTERNALSYM ALC_USEBITMAP}
ALC_HIRAGANA = $00010000; { hiragana JPN }
{$EXTERNALSYM ALC_HIRAGANA}
ALC_KATAKANA = $00020000; { katakana JPN }
{$EXTERNALSYM ALC_KATAKANA}
ALC_KANJI = $00040000; { kanji JPN, ShiftJIS 1+2+3 }
{$EXTERNALSYM ALC_KANJI}
ALC_GLOBALPRIORITY = $10000000;
{$EXTERNALSYM ALC_GLOBALPRIORITY}
ALC_OEM = $0FF80000; { OEM recognizer-specific }
{$EXTERNALSYM ALC_OEM}
ALC_RESERVED = $E0003000; { avail for future use }
{$EXTERNALSYM ALC_RESERVED}
ALC_NOPRIORITY = $00000000; { for alcPriority = none }
{$EXTERNALSYM ALC_NOPRIORITY}
ALC_ALPHA = ALC_LCALPHA or ALC_UCALPHA;
{$EXTERNALSYM ALC_ALPHA}
ALC_ALPHANUMERIC = ALC_ALPHA or ALC_NUMERIC;
{$EXTERNALSYM ALC_ALPHANUMERIC}
ALC_SYSMINIMUM = ALC_ALPHANUMERIC or ALC_PUNC or ALC_WHITE or ALC_GESTURE;
{$EXTERNALSYM ALC_SYSMINIMUM}
ALC_ALL = ALC_SYSMINIMUM or ALC_MATH or ALC_MONETARY or ALC_OTHER or ALC_NONPRINT;
{$EXTERNALSYM ALC_ALL}
ALC_KANJISYSMINIMUM = ALC_SYSMINIMUM or ALC_HIRAGANA or ALC_KATAKANA or ALC_JIS1;
{$EXTERNALSYM ALC_KANJISYSMINIMUM}
ALC_KANJIALL = ALC_ALL or ALC_HIRAGANA or ALC_KATAKANA or ALC_KANJI;
{$EXTERNALSYM ALC_KANJIALL}
{ box edit styles: }
BXS_NONE = $0000; { none }
{$EXTERNALSYM BXS_NONE}
BXS_RECT = $0001; { use rectangle instead of cusp }
{$EXTERNALSYM BXS_RECT}
BXS_BOXCROSS = $0004; { use cross at box center }
{$EXTERNALSYM BXS_BOXCROSS}
BXS_MASK = $0007; { mask for above }
{$EXTERNALSYM BXS_MASK}
{ Public Bitmaps : }
OBM_SKBBTNUP = 32767;
{$EXTERNALSYM OBM_SKBBTNUP}
OBM_SKBBTNDOWN = 32766;
{$EXTERNALSYM OBM_SKBBTNDOWN}
OBM_SKBBTNDISABLED = 32765;
{$EXTERNALSYM OBM_SKBBTNDISABLED}
OBM_ZENBTNUP = 32764;
{$EXTERNALSYM OBM_ZENBTNUP}
OBM_ZENBTNDOWN = 32763;
{$EXTERNALSYM OBM_ZENBTNDOWN}
OBM_ZENBTNDISABLED = 32762;
{$EXTERNALSYM OBM_ZENBTNDISABLED}
OBM_HANBTNUP = 32761;
{$EXTERNALSYM OBM_HANBTNUP}
OBM_HANBTNDOWN = 32760;
{$EXTERNALSYM OBM_HANBTNDOWN}
OBM_HANBTNDISABLED = 32759;
{$EXTERNALSYM OBM_HANBTNDISABLED}
OBM_KKCBTNUP = 32758;
{$EXTERNALSYM OBM_KKCBTNUP}
OBM_KKCBTNDOWN = 32757;
{$EXTERNALSYM OBM_KKCBTNDOWN}
OBM_KKCBTNDISABLED = 32756;
{$EXTERNALSYM OBM_KKCBTNDISABLED}
OBM_SIPBTNUP = 32755;
{$EXTERNALSYM OBM_SIPBTNUP}
OBM_SIPBTNDOWN = 32754;
{$EXTERNALSYM OBM_SIPBTNDOWN}
OBM_SIPBTNDISABLED = 32753;
{$EXTERNALSYM OBM_SIPBTNDISABLED}
OBM_PTYBTNUP = 32752;
{$EXTERNALSYM OBM_PTYBTNUP}
OBM_PTYBTNDOWN = 32751;
{$EXTERNALSYM OBM_PTYBTNDOWN}
OBM_PTYBTNDISABLED = 32750;
{$EXTERNALSYM OBM_PTYBTNDISABLED}
{ Default pen cursor to indicate writing, points northwest }
IDC_PEN = MAKEINTRESOURCE(32631);
{$EXTERNALSYM IDC_PEN}
{ alternate select cursor: upsidedown standard arrow, points southeast }
IDC_ALTSELECT = MAKEINTRESOURCE(32501);
{$EXTERNALSYM IDC_ALTSELECT}
{ special SYV values: }
SYV_NULL = $00000000;
{$EXTERNALSYM SYV_NULL}
SYV_UNKNOWN = $00000001;
{$EXTERNALSYM SYV_UNKNOWN}
SYV_EMPTY = $00000003;
{$EXTERNALSYM SYV_EMPTY}
SYV_BEGINOR = $00000010;
{$EXTERNALSYM SYV_BEGINOR}
SYV_ENDOR = $00000011;
{$EXTERNALSYM SYV_ENDOR}
SYV_OR = $00000012;
{$EXTERNALSYM SYV_OR}
SYV_SOFTNEWLINE = $00000020;
{$EXTERNALSYM SYV_SOFTNEWLINE}
SYV_SPACENULL = $00010000; { SyvCharacterToSymbol('\0') }
{$EXTERNALSYM SYV_SPACENULL}
{ SYV values for gestures: }
SYV_SELECTFIRST = $0002FFC0; { . means circle in following }
{$EXTERNALSYM SYV_SELECTFIRST}
SYV_LASSO = $0002FFC1; { lasso o-tap }
{$EXTERNALSYM SYV_LASSO}
SYV_SELECTLEFT = $0002FFC2; { no glyph }
{$EXTERNALSYM SYV_SELECTLEFT}
SYV_SELECTRIGHT = $0002FFC3; { no glyph }
{$EXTERNALSYM SYV_SELECTRIGHT}
SYV_SELECTLAST = $0002FFCF; { 16 SYVs reserved for selection }
{$EXTERNALSYM SYV_SELECTLAST}
SYV_CLEARCHAR = $0002FFD2; { d. }
{$EXTERNALSYM SYV_CLEARCHAR}
SYV_HELP = $0002FFD3; { no glyph }
{$EXTERNALSYM SYV_HELP}
SYV_KKCONVERT = $0002FFD4; { k. }
{$EXTERNALSYM SYV_KKCONVERT}
SYV_CLEAR = $0002FFD5; { d. }
{$EXTERNALSYM SYV_CLEAR}
SYV_INSERT = $0002FFD6; { ^. }
{$EXTERNALSYM SYV_INSERT}
SYV_CONTEXT = $0002FFD7; { m. }
{$EXTERNALSYM SYV_CONTEXT}
SYV_EXTENDSELECT = $0002FFD8; { no glyph }
{$EXTERNALSYM SYV_EXTENDSELECT}
SYV_UNDO = $0002FFD9; { u. }
{$EXTERNALSYM SYV_UNDO}
SYV_COPY = $0002FFDA; { c. }
{$EXTERNALSYM SYV_COPY}
SYV_CUT = $0002FFDB; { x. }
{$EXTERNALSYM SYV_CUT}
SYV_PASTE = $0002FFDC; { p. }
{$EXTERNALSYM SYV_PASTE}
SYV_CLEARWORD = $0002FFDD; { no glyph }
{$EXTERNALSYM SYV_CLEARWORD}
SYV_USER = $0002FFDE; { reserved }
{$EXTERNALSYM SYV_USER}
SYV_CORRECT = $0002FFDF; { check. }
{$EXTERNALSYM SYV_CORRECT}
SYV_BACKSPACE = $00020008; { no glyph }
{$EXTERNALSYM SYV_BACKSPACE}
SYV_TAB = $00020009; { t. }
{$EXTERNALSYM SYV_TAB}
SYV_RETURN = $0002000D; { n. }
{$EXTERNALSYM SYV_RETURN}
SYV_SPACE = $00020020; { s. }
{$EXTERNALSYM SYV_SPACE}
{ Application specific gestures, Circle a-z and Circle A-Z: }
SYV_APPGESTUREMASK = $00020000;
{$EXTERNALSYM SYV_APPGESTUREMASK}
SYV_CIRCLEUPA = $000224B6; { map into Unicode space }
{$EXTERNALSYM SYV_CIRCLEUPA}
SYV_CIRCLEUPZ = $000224CF; { for circled letters }
{$EXTERNALSYM SYV_CIRCLEUPZ}
SYV_CIRCLELOA = $000224D0;
{$EXTERNALSYM SYV_CIRCLELOA}
SYV_CIRCLELOZ = $000224E9;
{$EXTERNALSYM SYV_CIRCLELOZ}
{ SYV definitions for shapes: }
SYV_SHAPELINE = $00040001;
{$EXTERNALSYM SYV_SHAPELINE}
SYV_SHAPEELLIPSE = $00040002;
{$EXTERNALSYM SYV_SHAPEELLIPSE}
SYV_SHAPERECT = $00040003;
{$EXTERNALSYM SYV_SHAPERECT}
SYV_SHAPEMIN = SYV_SHAPELINE; { alias }
{$EXTERNALSYM SYV_SHAPEMIN}
SYV_SHAPEMAX = SYV_SHAPERECT; { alias }
{$EXTERNALSYM SYV_SHAPEMAX}
{ SYV classes: }
SYVHI_SPECIAL = 0;
{$EXTERNALSYM SYVHI_SPECIAL}
SYVHI_ANSI = 1;
{$EXTERNALSYM SYVHI_ANSI}
SYVHI_GESTURE = 2;
{$EXTERNALSYM SYVHI_GESTURE}
SYVHI_KANJI = 3;
{$EXTERNALSYM SYVHI_KANJI}
SYVHI_SHAPE = 4;
{$EXTERNALSYM SYVHI_SHAPE}
SYVHI_UNICODE = 5;
{$EXTERNALSYM SYVHI_UNICODE}
SYVHI_VKEY = 6;
{$EXTERNALSYM SYVHI_VKEY}
{ IEdit Pop-up Menu Command Items }
IEM_UNDO = 1; { Undo }
{$EXTERNALSYM IEM_UNDO}
IEM_CUT = 2; { Cut }
{$EXTERNALSYM IEM_CUT}
IEM_COPY = 3; { Copy }
{$EXTERNALSYM IEM_COPY}
IEM_PASTE = 4; { Paste }
{$EXTERNALSYM IEM_PASTE}
IEM_CLEAR = 5; { Clear }
{$EXTERNALSYM IEM_CLEAR}
IEM_SELECTALL = 6; { Select All Strokes }
{$EXTERNALSYM IEM_SELECTALL}
IEM_ERASE = 7; { Use Eraser }
{$EXTERNALSYM IEM_ERASE}
IEM_PROPERTIES = 8; { DoProperties }
{$EXTERNALSYM IEM_PROPERTIES}
IEM_LASSO = 9; { Use Lasso }
{$EXTERNALSYM IEM_LASSO}
IEM_RESIZE = 10; { Resize }
{$EXTERNALSYM IEM_RESIZE}
IEM_USER = 100; { first menu item# available to app }
{$EXTERNALSYM IEM_USER}
{ IEdit Style Attributes }
IES_BORDER = $0001; { ctl has a border }
{$EXTERNALSYM IES_BORDER}
IES_HSCROLL = $0002; { ctl is horizontally scrollable }
{$EXTERNALSYM IES_HSCROLL}
IES_VSCROLL = $0004; { ctl is vertically scrollable }
{$EXTERNALSYM IES_VSCROLL}
IES_OWNERDRAW = $0008; { ctl will be drawn by parent window }
{$EXTERNALSYM IES_OWNERDRAW}
{ PenData API constants: }
{ ANIMATEINFO callback options: }
AI_CBSTROKE = $FFFF; { Animate callback after every stroke }
{$EXTERNALSYM AI_CBSTROKE}
{ ANIMATEINFO options: }
AI_SKIPUPSTROKES = $0001; { ignore upstrokes in animation }
{$EXTERNALSYM AI_SKIPUPSTROKES}
{ CompressPenData() API options: }
CMPD_COMPRESS = $0001;
{$EXTERNALSYM CMPD_COMPRESS}
CMPD_DECOMPRESS = $0002;
{$EXTERNALSYM CMPD_DECOMPRESS}
{ CreatePenDataRegion types: }
CPDR_BOX = 1; { bounding box }
{$EXTERNALSYM CPDR_BOX}
CPDR_LASSO = 2; { lasso }
{$EXTERNALSYM CPDR_LASSO}
{ CreatePenData (CPD) and Pen Hardware (PHW) Flags; }
{ The order of PHW flags is important: }
CPD_DEFAULT = $047F; { CPD_TIME | PHW_ALL }
{$EXTERNALSYM CPD_DEFAULT}
CPD_USERBYTE = $0100; { alloc 8 bits/stroke }
{$EXTERNALSYM CPD_USERBYTE}
CPD_USERWORD = $0200; { alloc 16 bits/stroke }
{$EXTERNALSYM CPD_USERWORD}
CPD_USERDWORD = $0300; { alloc 32 bits/stroke }
{$EXTERNALSYM CPD_USERDWORD}
CPD_TIME = $0400; { maintain abs time info per stroke }
{$EXTERNALSYM CPD_TIME}
{ DrawPenDataEx() flags/options: }
DPD_HDCPEN = $0001; { use pen selected in HDC }
{$EXTERNALSYM DPD_HDCPEN}
DPD_DRAWSEL = $0002; { draw the selection }
{$EXTERNALSYM DPD_DRAWSEL}
{ ExtractPenDataPoints options (EPDP_xx): }
EPDP_REMOVE = $0001; { Remove points from the pendata }
{$EXTERNALSYM EPDP_REMOVE}
{ ExtractPenDataStrokes options and modifiers (EPDS_xx): }
EPDS_SELECT = 1; { selected strokes }
{$EXTERNALSYM EPDS_SELECT}
EPDS_STROKEINDEX = 2; { index }
{$EXTERNALSYM EPDS_STROKEINDEX}
EPDS_USER = 3; { user-specific value }
{$EXTERNALSYM EPDS_USER}
EPDS_PENTIP = 4; { complete pentip }
{$EXTERNALSYM EPDS_PENTIP}
EPDS_TIPCOLOR = 5; { pentip color }
{$EXTERNALSYM EPDS_TIPCOLOR}
EPDS_TIPWIDTH = 6; { pentip width }
{$EXTERNALSYM EPDS_TIPWIDTH}
EPDS_TIPNIB = 7; { pentip nib style }
{$EXTERNALSYM EPDS_TIPNIB}
EPDS_INKSET = 8; { inkset match }
{$EXTERNALSYM EPDS_INKSET}
EPDS_EQ = $0000; { default: same as }
{$EXTERNALSYM EPDS_EQ}
EPDS_LT = $0010; { all strokes less than }
{$EXTERNALSYM EPDS_LT}
EPDS_GT = $0020; { all strokes greater than }
{$EXTERNALSYM EPDS_GT}
EPDS_NOT = $0040; { all strokes not matching }
{$EXTERNALSYM EPDS_NOT}
EPDS_NE = $0040; { alias }
{$EXTERNALSYM EPDS_NE}
EPDS_GTE = $0050; { alias for NOT LT }
{$EXTERNALSYM EPDS_GTE}
EPDS_LTE = $0060; { alias for NOT GT }
{$EXTERNALSYM EPDS_LTE}
EPDS_REMOVE = $8000; { remove matching strokes from source }
{$EXTERNALSYM EPDS_REMOVE}
{ GetPenDataAttributes options (GPA_xx): }
GPA_MAXLEN = 1; { length of longest stroke }
{$EXTERNALSYM GPA_MAXLEN}
GPA_POINTS = 2; { total number of points }
{$EXTERNALSYM GPA_POINTS}
GPA_PDTS = 3; { PDTS_xx bits }
{$EXTERNALSYM GPA_PDTS}
GPA_RATE = 4; { get sampling rate }
{$EXTERNALSYM GPA_RATE}
GPA_RECTBOUND = 5; { bounding rect of all points }
{$EXTERNALSYM GPA_RECTBOUND}
GPA_RECTBOUNDINK = 6; { ditto, adj for fat ink }
{$EXTERNALSYM GPA_RECTBOUNDINK}
GPA_SIZE = 7; { size of pendata in bytes }
{$EXTERNALSYM GPA_SIZE}
GPA_STROKES = 8; { total number of strokes }
{$EXTERNALSYM GPA_STROKES}
GPA_TIME = 9; { absolute time at creation of pendata }
{$EXTERNALSYM GPA_TIME}
GPA_USER = 10; { number of user bytes available: 0, 1, 2, 4 }
{$EXTERNALSYM GPA_USER}
GPA_VERSION = 11; { version number of pendata }
{$EXTERNALSYM GPA_VERSION}
{ GetStrokeAttributes options (GSA_xx): }
GSA_PENTIP = 1; { get stroke pentip (color, width, nib) }
{$EXTERNALSYM GSA_PENTIP}
GSA_PENTIPCLASS = 2; { same as GSA_PENTIP }
{$EXTERNALSYM GSA_PENTIPCLASS}
GSA_USER = 3; { get stroke user value }
{$EXTERNALSYM GSA_USER}
GSA_USERCLASS = 4; { get stroke's class user value }
{$EXTERNALSYM GSA_USERCLASS}
GSA_TIME = 5; { get time of stroke }
{$EXTERNALSYM GSA_TIME}
GSA_SIZE = 6; { get size of stroke in points and bytes }
{$EXTERNALSYM GSA_SIZE}
GSA_SELECT = 7; { get selection status of stroke }
{$EXTERNALSYM GSA_SELECT}
GSA_DOWN = 8; { get up/down state of stroke }
{$EXTERNALSYM GSA_DOWN}
GSA_RECTBOUND = 9; { get the bounding rectangle of the stroke }
{$EXTERNALSYM GSA_RECTBOUND}
{ GetStrokeTableAttributes options (GSA_xx): }
GSA_PENTIPTABLE = 10; { get table-indexed pentip }
{$EXTERNALSYM GSA_PENTIPTABLE}
GSA_SIZETABLE = 11; { get count of Stroke Class Table entries }
{$EXTERNALSYM GSA_SIZETABLE}
GSA_USERTABLE = 12; { get table-indexed user value }
{$EXTERNALSYM GSA_USERTABLE}
IX_END = $FFFF; { to or past last available index }
{$EXTERNALSYM IX_END}
{ PenTip: }
PENTIP_NIBDEFAULT = (0); { default pen tip nib style }
{$EXTERNALSYM PENTIP_NIBDEFAULT}
PENTIP_HEIGHTDEFAULT = (0); { default pen tip nib height }
{$EXTERNALSYM PENTIP_HEIGHTDEFAULT}
PENTIP_OPAQUE = $FF; { default opaque ink }
{$EXTERNALSYM PENTIP_OPAQUE}
PENTIP_HILITE = $80;
{$EXTERNALSYM PENTIP_HILITE}
PENTIP_TRANSPARENT = (0);
{$EXTERNALSYM PENTIP_TRANSPARENT}
{ General PenData API return values (PDR_xx): }
PDR_NOHIT = 3; { hit test failed }
{$EXTERNALSYM PDR_NOHIT}
PDR_HIT = 2; { hit test succeeded }
{$EXTERNALSYM PDR_HIT}
PDR_OK = 1; { success }
{$EXTERNALSYM PDR_OK}
PDR_CANCEL = 0; { callback cancel or impasse }
{$EXTERNALSYM PDR_CANCEL}
PDR_ERROR = -1; { parameter or unspecified error }
{$EXTERNALSYM PDR_ERROR}
PDR_PNDTERR = -2; { bad pendata }
{$EXTERNALSYM PDR_PNDTERR}
PDR_VERSIONERR = -3; { pendata version error }
{$EXTERNALSYM PDR_VERSIONERR}
PDR_COMPRESSED = -4; { pendata is compressed }
{$EXTERNALSYM PDR_COMPRESSED}
PDR_STRKINDEXERR = -5; { stroke index error }
{$EXTERNALSYM PDR_STRKINDEXERR}
PDR_PNTINDEXERR = -6; { point index error }
{$EXTERNALSYM PDR_PNTINDEXERR}
PDR_MEMERR = -7; { memory error }
{$EXTERNALSYM PDR_MEMERR}
PDR_INKSETERR = -8; { bad inkset }
{$EXTERNALSYM PDR_INKSETERR}
PDR_ABORT = -9; { pendata has become invalid, e.g. }
{$EXTERNALSYM PDR_ABORT}
PDR_NA = -10; { option not available (pw kernel) }
{$EXTERNALSYM PDR_NA}
PDR_USERDATAERR = -16; { user data error }
{$EXTERNALSYM PDR_USERDATAERR}
PDR_SCALINGERR = -17; { scale error }
{$EXTERNALSYM PDR_SCALINGERR}
PDR_TIMESTAMPERR = -18; { timestamp error }
{$EXTERNALSYM PDR_TIMESTAMPERR}
PDR_OEMDATAERR = -19; { OEM data error }
{$EXTERNALSYM PDR_OEMDATAERR}
PDR_SCTERR = -20; { SCT error (full) }
{$EXTERNALSYM PDR_SCTERR}
{ PenData Scaling (PDTS): }
PDTS_LOMETRIC = 0; { 0.01mm }
{$EXTERNALSYM PDTS_LOMETRIC}
PDTS_HIMETRIC = 1; { 0.001mm }
{$EXTERNALSYM PDTS_HIMETRIC}
PDTS_HIENGLISH = 2; { 0.001" }
{$EXTERNALSYM PDTS_HIENGLISH}
PDTS_STANDARDSCALE = 2; { PDTS_HIENGLISH alias }
{$EXTERNALSYM PDTS_STANDARDSCALE}
PDTS_DISPLAY = 3; { display pixel }
{$EXTERNALSYM PDTS_DISPLAY}
PDTS_ARBITRARY = 4; { app-specific scaling }
{$EXTERNALSYM PDTS_ARBITRARY}
PDTS_SCALEMASK = $000F; { scaling values in low nibble }
{$EXTERNALSYM PDTS_SCALEMASK}
{ CompactPenData API trim options: }
PDTT_DEFAULT = $0000;
{$EXTERNALSYM PDTT_DEFAULT}
PDTT_PENINFO = $0100;
{$EXTERNALSYM PDTT_PENINFO}
PDTT_UPPOINTS = $0200;
{$EXTERNALSYM PDTT_UPPOINTS}
PDTT_OEMDATA = $0400;
{$EXTERNALSYM PDTT_OEMDATA}
PDTT_COLLINEAR = $0800;
{$EXTERNALSYM PDTT_COLLINEAR}
PDTT_COLINEAR = $0800; { alt sp alias }
{$EXTERNALSYM PDTT_COLINEAR}
PDTT_DECOMPRESS = $4000; { decompress the data }
{$EXTERNALSYM PDTT_DECOMPRESS}
PDTT_COMPRESS = $8000;
{$EXTERNALSYM PDTT_COMPRESS}
PDTT_ALL = $0F00; { PENINFO|UPPOINTS|OEMDATA|COLLINEAR }
{$EXTERNALSYM PDTT_ALL}
PHW_NONE = $0000; { no OEMdata }
{$EXTERNALSYM PHW_NONE}
PHW_PRESSURE = $0001; { report pressure in OEMdata if avail }
{$EXTERNALSYM PHW_PRESSURE}
PHW_HEIGHT = $0002; { ditto height }
{$EXTERNALSYM PHW_HEIGHT}
PHW_ANGLEXY = $0004; { ditto xy angle }
{$EXTERNALSYM PHW_ANGLEXY}
PHW_ANGLEZ = $0008; { ditto z angle }
{$EXTERNALSYM PHW_ANGLEZ}
PHW_BARRELROTATION = $0010; { ditto barrel rotation }
{$EXTERNALSYM PHW_BARRELROTATION}
PHW_OEMSPECIFIC = $0020; { ditto OEM-specific value }
{$EXTERNALSYM PHW_OEMSPECIFIC}
PHW_PDK = $0040; { report per-point PDK_xx in OEM data }
{$EXTERNALSYM PHW_PDK}
PHW_ALL = $007F; { report everything }
{$EXTERNALSYM PHW_ALL}
{ compact pen data trim options: matches PDTT_values (see above) }
PDTS_COMPRESS2NDDERIV = $0010; { compress using 2nd deriv }
{$EXTERNALSYM PDTS_COMPRESS2NDDERIV}
PDTS_COMPRESSMETHOD = $00F0; { sum of compress method flags }
{$EXTERNALSYM PDTS_COMPRESSMETHOD}
PDTS_NOPENINFO = $0100; { removes PENINFO struct from header }
{$EXTERNALSYM PDTS_NOPENINFO}
PDTS_NOUPPOINTS = $0200; { remove up pts }
{$EXTERNALSYM PDTS_NOUPPOINTS}
PDTS_NOOEMDATA = $0400; { remove OEM data }
{$EXTERNALSYM PDTS_NOOEMDATA}
PDTS_NOCOLLINEAR = $0800; { remove successive identical pts }
{$EXTERNALSYM PDTS_NOCOLLINEAR}
PDTS_NOCOLINEAR = $0800; { alt sp alias }
{$EXTERNALSYM PDTS_NOCOLINEAR}
PDTS_NOTICK = $1000; { remove timing info (2.0) }
{$EXTERNALSYM PDTS_NOTICK}
PDTS_NOUSER = $2000; { remove user info (2.0) }
{$EXTERNALSYM PDTS_NOUSER}
PDTS_NOEMPTYSTROKES = $4000; { remove empty strokes (2.0) }
{$EXTERNALSYM PDTS_NOEMPTYSTROKES}
PDTS_COMPRESSED = $8000; { perform lossless compression }
{$EXTERNALSYM PDTS_COMPRESSED}
{ SetStrokeAttributes options (SSA_xx): }
SSA_PENTIP = 1; { set stroke tip (color, width, nib) }
{$EXTERNALSYM SSA_PENTIP}
SSA_PENTIPCLASS = 2; { set stroke's class pentip }
{$EXTERNALSYM SSA_PENTIPCLASS}
SSA_USER = 3; { set stroke user value }
{$EXTERNALSYM SSA_USER}
SSA_USERCLASS = 4; { set stroke's class user value }
{$EXTERNALSYM SSA_USERCLASS}
SSA_TIME = 5; { set time of stroke }
{$EXTERNALSYM SSA_TIME}
SSA_SELECT = 6; { set selection status of stroke }
{$EXTERNALSYM SSA_SELECT}
SSA_DOWN = 7; { set up/down state of stroke }
{$EXTERNALSYM SSA_DOWN}
{ SetStrokeTableAttributes options (SSA_xx): }
SSA_PENTIPTABLE = 8; { set table-indexed pentip }
{$EXTERNALSYM SSA_PENTIPTABLE}
SSA_USERTABLE = 9; { set table-indexed user value }
{$EXTERNALSYM SSA_USERTABLE}
{ PenTip flag bits: }
TIP_ERASECOLOR = 1; { erase specific color pentip.rgb }
{$EXTERNALSYM TIP_ERASECOLOR}
{ TrimPenData() API options: }
TPD_RECALCSIZE = $0000; { no trim, used for resize calc }
{$EXTERNALSYM TPD_RECALCSIZE}
TPD_USER = $0080; { per-stroke user info }
{$EXTERNALSYM TPD_USER}
TPD_TIME = $0100; { per-stroke timing info }
{$EXTERNALSYM TPD_TIME}
TPD_UPPOINTS = $0200; { x-y data up points }
{$EXTERNALSYM TPD_UPPOINTS}
TPD_COLLINEAR = $0400; { colinear and coincident points }
{$EXTERNALSYM TPD_COLLINEAR}
TPD_COLINEAR = $0400; { alt sp alias }
{$EXTERNALSYM TPD_COLINEAR}
TPD_PENINFO = $0800; { PenInfo struct and all OEM }
{$EXTERNALSYM TPD_PENINFO}
TPD_PHW = $1000; { OEM & pdk except stroke tick or user }
{$EXTERNALSYM TPD_PHW}
TPD_OEMDATA = $1000; { ditto }
{$EXTERNALSYM TPD_OEMDATA}
TPD_EMPTYSTROKES = $2000; { strokes with zero points }
{$EXTERNALSYM TPD_EMPTYSTROKES}
TPD_EVERYTHING = $3FFF; { everything (incl PHW_xx) except down pts }
{$EXTERNALSYM TPD_EVERYTHING}
{ Dictionary: }
cbDictPathMax = 255;
{$EXTERNALSYM cbDictPathMax}
DIRQ_QUERY = 1;
{$EXTERNALSYM DIRQ_QUERY}
DIRQ_DESCRIPTION = 2;
{$EXTERNALSYM DIRQ_DESCRIPTION}
DIRQ_CONFIGURE = 3;
{$EXTERNALSYM DIRQ_CONFIGURE}
DIRQ_OPEN = 4;
{$EXTERNALSYM DIRQ_OPEN}
DIRQ_CLOSE = 5;
{$EXTERNALSYM DIRQ_CLOSE}
DIRQ_SETWORDLISTS = 6;
{$EXTERNALSYM DIRQ_SETWORDLISTS}
DIRQ_STRING = 7;
{$EXTERNALSYM DIRQ_STRING}
DIRQ_SUGGEST = 8;
{$EXTERNALSYM DIRQ_SUGGEST}
DIRQ_ADD = 9;
{$EXTERNALSYM DIRQ_ADD}
DIRQ_DELETE = 10;
{$EXTERNALSYM DIRQ_DELETE}
DIRQ_FLUSH = 11;
{$EXTERNALSYM DIRQ_FLUSH}
DIRQ_RCCHANGE = 12;
{$EXTERNALSYM DIRQ_RCCHANGE}
DIRQ_SYMBOLGRAPH = 13;
{$EXTERNALSYM DIRQ_SYMBOLGRAPH}
DIRQ_INIT = 14;
{$EXTERNALSYM DIRQ_INIT}
DIRQ_CLEANUP = 15;
{$EXTERNALSYM DIRQ_CLEANUP}
DIRQ_COPYRIGHT = 16;
{$EXTERNALSYM DIRQ_COPYRIGHT}
DIRQ_USER = 4096;
{$EXTERNALSYM DIRQ_USER}
{ Pen driver: }
BITPENUP = $8000;
{$EXTERNALSYM BITPENUP}
{ Pen Driver messages: }
DRV_SetPenDriverEntryPoints = DRV_RESERVED+1;
{$EXTERNALSYM DRV_SetPenDriverEntryPoints}
DRV_SetEntryPoints = DRV_RESERVED+1; { alias }
{$EXTERNALSYM DRV_SetEntryPoints}
DRV_RemovePenDriverEntryPoints = DRV_RESERVED+2;
{$EXTERNALSYM DRV_RemovePenDriverEntryPoints}
DRV_RemoveEntryPoints = DRV_RESERVED+2; { alias }
{$EXTERNALSYM DRV_RemoveEntryPoints}
DRV_SetPenSamplingRate = DRV_RESERVED+3;
{$EXTERNALSYM DRV_SetPenSamplingRate}
DRV_SetPenSamplingDist = DRV_RESERVED+4;
{$EXTERNALSYM DRV_SetPenSamplingDist}
DRV_GetName = DRV_RESERVED+5;
{$EXTERNALSYM DRV_GetName}
DRV_GetVersion = DRV_RESERVED+6;
{$EXTERNALSYM DRV_GetVersion}
DRV_GetPenInfo = DRV_RESERVED+7;
{$EXTERNALSYM DRV_GetPenInfo}
DRV_PenPlayStart = DRV_RESERVED+8;
{$EXTERNALSYM DRV_PenPlayStart}
DRV_PenPlayBack = DRV_RESERVED+9;
{$EXTERNALSYM DRV_PenPlayBack}
DRV_PenPlayStop = DRV_RESERVED+10;
{$EXTERNALSYM DRV_PenPlayStop}
DRV_GetCalibration = DRV_RESERVED+11;
{$EXTERNALSYM DRV_GetCalibration}
DRV_SetCalibration = DRV_RESERVED+12;
{$EXTERNALSYM DRV_SetCalibration}
DRV_Reserved1 = DRV_RESERVED+13;
{$EXTERNALSYM DRV_Reserved1}
DRV_Reserved2 = DRV_RESERVED+14;
{$EXTERNALSYM DRV_Reserved2}
DRV_Query = DRV_RESERVED+15;
{$EXTERNALSYM DRV_Query}
DRV_GetPenSamplingRate = DRV_RESERVED+16;
{$EXTERNALSYM DRV_GetPenSamplingRate}
DRV_Calibrate = DRV_RESERVED+17;
{$EXTERNALSYM DRV_Calibrate}
{ Pen Driver Playback constants: }
PLAY_VERSION_10_DATA = 0;
{$EXTERNALSYM PLAY_VERSION_10_DATA}
PLAY_VERSION_20_DATA = 1;
{$EXTERNALSYM PLAY_VERSION_20_DATA}
{ Pen Driver return values: }
DRV_FAILURE = $00000000;
{$EXTERNALSYM DRV_FAILURE}
DRV_SUCCESS = $00000001;
{$EXTERNALSYM DRV_SUCCESS}
DRV_BADPARAM1 = $FFFFFFFF;
{$EXTERNALSYM DRV_BADPARAM1}
DRV_BADPARAM2 = $FFFFFFFE;
{$EXTERNALSYM DRV_BADPARAM2}
DRV_BADSTRUCT = $FFFFFFFD;
{$EXTERNALSYM DRV_BADSTRUCT}
{ Pen Driver register messages flags: }
PENREG_DEFAULT = $00000002;
{$EXTERNALSYM PENREG_DEFAULT}
PENREG_WILLHANDLEMOUSE = $00000001;
{$EXTERNALSYM PENREG_WILLHANDLEMOUSE}
MAXOEMDATAWORDS = 6; { rgwOemData[MAXOEMDATAWORDS] }
{$EXTERNALSYM MAXOEMDATAWORDS}
RC_LDEFAULTFLAGS = $80000000;
{$EXTERNALSYM RC_LDEFAULTFLAGS}
{ Pen Collection Mode termination conditions: }
{ (note update doc for PCMINFO struct if change these) }
PCM_PENUP = $00000001; { stop on penup }
{$EXTERNALSYM PCM_PENUP}
PCM_RANGE = $00000002; { stop on leaving range }
{$EXTERNALSYM PCM_RANGE}
PCM_INVERT = $00000020; { stop on tap of opposite end }
{$EXTERNALSYM PCM_INVERT}
PCM_RECTEXCLUDE = $00002000; { click in exclude rect }
{$EXTERNALSYM PCM_RECTEXCLUDE}
PCM_RECTBOUND = $00004000; { click outside bounds rect }
{$EXTERNALSYM PCM_RECTBOUND}
PCM_TIMEOUT = $00008000; { no activity for timeout ms }
{$EXTERNALSYM PCM_TIMEOUT}
{ new for 2.0: }
PCM_RGNBOUND = $00010000; { click outside bounding region }
{$EXTERNALSYM PCM_RGNBOUND}
PCM_RGNEXCLUDE = $00020000; { click in exclude region }
{$EXTERNALSYM PCM_RGNEXCLUDE}
PCM_DOPOLLING = $00040000; { polling mode }
{$EXTERNALSYM PCM_DOPOLLING}
PCM_TAPNHOLD = $00080000; { check for Tap And Hold }
{$EXTERNALSYM PCM_TAPNHOLD}
PCM_ADDDEFAULTS = RC_LDEFAULTFLAGS; { $80000000 }
{$EXTERNALSYM PCM_ADDDEFAULTS}
{ Pen Device Capabilities: }
PDC_INTEGRATED = $00000001; { display=digitizer }
{$EXTERNALSYM PDC_INTEGRATED}
PDC_PROXIMITY = $00000002; { detect non-contacting pen }
{$EXTERNALSYM PDC_PROXIMITY}
PDC_RANGE = $00000004; { event on out-of-range }
{$EXTERNALSYM PDC_RANGE}
PDC_INVERT = $00000008; { pen opposite end detect }
{$EXTERNALSYM PDC_INVERT}
PDC_RELATIVE = $00000010; { pen driver coords }
{$EXTERNALSYM PDC_RELATIVE}
PDC_BARREL1 = $00000020; { barrel button 1 present }
{$EXTERNALSYM PDC_BARREL1}
PDC_BARREL2 = $00000040; { ditto 2 }
{$EXTERNALSYM PDC_BARREL2}
PDC_BARREL3 = $00000080; { ditto 3 }
{$EXTERNALSYM PDC_BARREL3}
{ Pen Driver Kit states: }
PDK_NULL = $0000; { default to no flags set }
{$EXTERNALSYM PDK_NULL}
PDK_UP = $0000; { PDK_NULL alias }
{$EXTERNALSYM PDK_UP}
PDK_DOWN = $0001; { pentip switch ON due to contact }
{$EXTERNALSYM PDK_DOWN}
PDK_BARREL1 = $0002; { barrel1 switch depressed }
{$EXTERNALSYM PDK_BARREL1}
PDK_BARREL2 = $0004; { ditto 2 }
{$EXTERNALSYM PDK_BARREL2}
PDK_BARREL3 = $0008; { ditto 3 }
{$EXTERNALSYM PDK_BARREL3}
PDK_SWITCHES = $000F; { sum of down + barrels 1,2,3 }
{$EXTERNALSYM PDK_SWITCHES}
PDK_UNUSED10 = $0020;
{$EXTERNALSYM PDK_UNUSED10}
PDK_UNUSED20 = $0040;
{$EXTERNALSYM PDK_UNUSED20}
PDK_INVERTED = $0080; { other end of pen used as tip }
{$EXTERNALSYM PDK_INVERTED}
PDK_PENIDMASK = $0F00; { bits 8..11 physical pen id (0..15) }
{$EXTERNALSYM PDK_PENIDMASK}
PDK_UNUSED1000 = $1000;
{$EXTERNALSYM PDK_UNUSED1000}
PDK_INKSTOPPED = $2000; { Inking stopped }
{$EXTERNALSYM PDK_INKSTOPPED}
PDK_OUTOFRANGE = $4000; { pen left range (OEM data invalid) }
{$EXTERNALSYM PDK_OUTOFRANGE}
PDK_DRIVER = $8000; { pen (not mouse) event }
{$EXTERNALSYM PDK_DRIVER}
PDK_TIPMASK = $0001; { mask for testing PDK_DOWN }
{$EXTERNALSYM PDK_TIPMASK}
{ OEM-specific values for Pen Driver: }
PDT_NULL = 0;
{$EXTERNALSYM PDT_NULL}
PDT_PRESSURE = 1; { pressure supported }
{$EXTERNALSYM PDT_PRESSURE}
PDT_HEIGHT = 2; { height above tablet }
{$EXTERNALSYM PDT_HEIGHT}
PDT_ANGLEXY = 3; { xy (horiz) angle supported }
{$EXTERNALSYM PDT_ANGLEXY}
PDT_ANGLEZ = 4; { z (vert) angle supported }
{$EXTERNALSYM PDT_ANGLEZ}
PDT_BARRELROTATION = 5; { barrel is rotated }
{$EXTERNALSYM PDT_BARRELROTATION}
PDT_OEMSPECIFIC = 16; { max }
{$EXTERNALSYM PDT_OEMSPECIFIC}
{ Denotes the ID of the current packet }
PID_CURRENT = -1;
{$EXTERNALSYM PID_CURRENT}
{ Handwriting Recognizer: }
{ GetResultsHRC options: }
GRH_ALL = 0; { get all results }
{$EXTERNALSYM GRH_ALL}
GRH_GESTURE = 1; { get only gesture results }
{$EXTERNALSYM GRH_GESTURE}
GRH_NONGESTURE = 2; { get all but gesture results }
{$EXTERNALSYM GRH_NONGESTURE}
{ Gesture sets for EnableGestureSetHRC (bit flags): }
GST_SEL = $00000001; { sel & lasso }
{$EXTERNALSYM GST_SEL}
GST_CLIP = $00000002; { cut copy paste }
{$EXTERNALSYM GST_CLIP}
GST_WHITE = $00000004; { sp tab ret }
{$EXTERNALSYM GST_WHITE}
GST_KKCONVERT = $00000008; { kkconvert }
{$EXTERNALSYM GST_KKCONVERT}
GST_EDIT = $00000010; { insert correct undo clear }
{$EXTERNALSYM GST_EDIT}
GST_SYS = $00000017; { all of the above }
{$EXTERNALSYM GST_SYS}
GST_CIRCLELO = $00000100; { lowercase circle }
{$EXTERNALSYM GST_CIRCLELO}
GST_CIRCLEUP = $00000200; { uppercase circle }
{$EXTERNALSYM GST_CIRCLEUP}
GST_CIRCLE = $00000300; { all circle }
{$EXTERNALSYM GST_CIRCLE}
GST_ALL = $00000317; { all of the above }
{$EXTERNALSYM GST_ALL}
{ General HRC API return values (HRCR_xx): }
HRCR_NORESULTS = 4; { No possible results to be found }
{$EXTERNALSYM HRCR_NORESULTS}
HRCR_COMPLETE = 3; { finished recognition }
{$EXTERNALSYM HRCR_COMPLETE}
HRCR_GESTURE = 2; { recognized gesture }
{$EXTERNALSYM HRCR_GESTURE}
HRCR_OK = 1; { success }
{$EXTERNALSYM HRCR_OK}
HRCR_INCOMPLETE = 0; { recognizer is processing input }
{$EXTERNALSYM HRCR_INCOMPLETE}
HRCR_ERROR = -1; { invalid param or unspecified error }
{$EXTERNALSYM HRCR_ERROR}
HRCR_MEMERR = -2; { memory error }
{$EXTERNALSYM HRCR_MEMERR}
HRCR_INVALIDGUIDE = -3; { invalid GUIDE struct }
{$EXTERNALSYM HRCR_INVALIDGUIDE}
HRCR_INVALIDPNDT = -4; { invalid pendata }
{$EXTERNALSYM HRCR_INVALIDPNDT}
HRCR_UNSUPPORTED = -5; { recognizer does not support feature }
{$EXTERNALSYM HRCR_UNSUPPORTED}
HRCR_CONFLICT = -6; { training conflict }
{$EXTERNALSYM HRCR_CONFLICT}
HRCR_HOOKED = -8; { hookasaurus ate the result }
{$EXTERNALSYM HRCR_HOOKED}
{ system wordlist for AddWordsHWL: }
HWL_SYSTEM = (1); { magic value means system wordlist }
{$EXTERNALSYM HWL_SYSTEM}
{ inkset returns: }
ISR_ERROR = -1; { Memory or other error }
{$EXTERNALSYM ISR_ERROR}
ISR_BADINKSET = -2; { bad source inkset }
{$EXTERNALSYM ISR_BADINKSET}
ISR_BADINDEX = -3; { bad inkset index }
{$EXTERNALSYM ISR_BADINDEX}
MAXHOTSPOT = 8; { max number of hotspots possible }
{$EXTERNALSYM MAXHOTSPOT}
{ ProcessHRC time constants: }
PH_MAX = $FFFFFFFF; { recognize rest of ink }
{$EXTERNALSYM PH_MAX}
PH_DEFAULT = $FFFFFFFE; { reasonable time }
{$EXTERNALSYM PH_DEFAULT}
PH_MIN = $FFFFFFFD; { minimum time }
{$EXTERNALSYM PH_MIN}
{ ResultsHookHRC options: }
RHH_STD = 0; { GetResultsHRC }
{$EXTERNALSYM RHH_STD}
RHH_BOX = 1; { GetBoxResultsHRC }
{$EXTERNALSYM RHH_BOX}
{ SetWordlistCoercionHRC options: }
SCH_NONE = 0; { turn off coercion }
{$EXTERNALSYM SCH_NONE}
SCH_ADVISE = 1; { macro is hint only }
{$EXTERNALSYM SCH_ADVISE}
SCH_FORCE = 2; { some result is forced from macro }
{$EXTERNALSYM SCH_FORCE}
{ Symbol Context Insert Modes }
SCIM_INSERT = 0; { insert }
{$EXTERNALSYM SCIM_INSERT}
SCIM_OVERWRITE = 1; { overwrite }
{$EXTERNALSYM SCIM_OVERWRITE}
{ SetResultsHookHREC options: }
SRH_HOOKALL = 1; { hook all recognizers }
{$EXTERNALSYM SRH_HOOKALL}
{ SetInternationalHRC options: }
SSH_RD = 1; { to right and down (English) }
{$EXTERNALSYM SSH_RD}
SSH_RU = 2; { to right and up }
{$EXTERNALSYM SSH_RU}
SSH_LD = 3; { to left and down (Hebrew) }
{$EXTERNALSYM SSH_LD}
SSH_LU = 4; { to left and up }
{$EXTERNALSYM SSH_LU}
SSH_DL = 5; { down and to the left (Chinese) }
{$EXTERNALSYM SSH_DL}
SSH_DR = 6; { down and to the right (Chinese) }
{$EXTERNALSYM SSH_DR}
SSH_UL = 7; { up and to the left }
{$EXTERNALSYM SSH_UL}
SSH_UR = 8; { up and to the right }
{$EXTERNALSYM SSH_UR}
SIH_ALLANSICHAR = 1; { use all ANSI }
{$EXTERNALSYM SIH_ALLANSICHAR}
{ TrainHREC options: }
TH_QUERY = 0; { query the user if conflict }
{$EXTERNALSYM TH_QUERY}
TH_FORCE = 1; { ditto no query }
{$EXTERNALSYM TH_FORCE}
TH_SUGGEST = 2; { abandon training if conflict }
{$EXTERNALSYM TH_SUGGEST}
{ Return values for WCR_TRAIN Function }
TRAIN_NONE = $0000;
{$EXTERNALSYM TRAIN_NONE}
TRAIN_DEFAULT = $0001;
{$EXTERNALSYM TRAIN_DEFAULT}
TRAIN_CUSTOM = $0002;
{$EXTERNALSYM TRAIN_CUSTOM}
TRAIN_BOTH = TRAIN_DEFAULT or TRAIN_CUSTOM;
{$EXTERNALSYM TRAIN_BOTH}
{ Control values for TRAINSAVE }
TRAIN_SAVE = 0; { save changes that have been made }
{$EXTERNALSYM TRAIN_SAVE}
TRAIN_REVERT = 1; { discard changes that have been made }
{$EXTERNALSYM TRAIN_REVERT}
TRAIN_RESET = 2; { use factory settings }
{$EXTERNALSYM TRAIN_RESET}
{ ConfigRecognizer and ConfigHREC options: }
WCR_RECOGNAME = 0; { ConfigRecognizer 1.0 }
{$EXTERNALSYM WCR_RECOGNAME}
WCR_QUERY = 1;
{$EXTERNALSYM WCR_QUERY}
WCR_CONFIGDIALOG = 2;
{$EXTERNALSYM WCR_CONFIGDIALOG}
WCR_DEFAULT = 3;
{$EXTERNALSYM WCR_DEFAULT}
WCR_RCCHANGE = 4;
{$EXTERNALSYM WCR_RCCHANGE}
WCR_VERSION = 5;
{$EXTERNALSYM WCR_VERSION}
WCR_TRAIN = 6;
{$EXTERNALSYM WCR_TRAIN}
WCR_TRAINSAVE = 7;
{$EXTERNALSYM WCR_TRAINSAVE}
WCR_TRAINMAX = 8;
{$EXTERNALSYM WCR_TRAINMAX}
WCR_TRAINDIRTY = 9;
{$EXTERNALSYM WCR_TRAINDIRTY}
WCR_TRAINCUSTOM = 10;
{$EXTERNALSYM WCR_TRAINCUSTOM}
WCR_QUERYLANGUAGE = 11;
{$EXTERNALSYM WCR_QUERYLANGUAGE}
WCR_USERCHANGE = 12;
{$EXTERNALSYM WCR_USERCHANGE}
{ ConfigHREC options: }
WCR_PWVERSION = 13; { ver of PenWin recognizer supports }
{$EXTERNALSYM WCR_PWVERSION}
WCR_GETALCPRIORITY = 14; { get recognizer's ALC priority }
{$EXTERNALSYM WCR_GETALCPRIORITY}
WCR_SETALCPRIORITY = 15; { set recognizer's ALC priority }
{$EXTERNALSYM WCR_SETALCPRIORITY}
WCR_GETANSISTATE = 16; { get ALLANSICHAR state }
{$EXTERNALSYM WCR_GETANSISTATE}
WCR_SETANSISTATE = 17; { set ALLANSICHAR if T }
{$EXTERNALSYM WCR_SETANSISTATE}
WCR_GETHAND = 18; { get writing hand }
{$EXTERNALSYM WCR_GETHAND}
WCR_SETHAND = 19; { set writing hand }
{$EXTERNALSYM WCR_SETHAND}
WCR_GETDIRECTION = 20; { get writing direction }
{$EXTERNALSYM WCR_GETDIRECTION}
WCR_SETDIRECTION = 21; { set writing direction }
{$EXTERNALSYM WCR_SETDIRECTION}
WCR_INITRECOGNIZER = 22; { init recognizer and set user name }
{$EXTERNALSYM WCR_INITRECOGNIZER}
WCR_CLOSERECOGNIZER = 23; { close recognizer }
{$EXTERNALSYM WCR_CLOSERECOGNIZER}
WCR_PRIVATE = 1024;
{$EXTERNALSYM WCR_PRIVATE}
{ sub-functions of WCR_USERCHANGE }
CRUC_NOTIFY = 0; { user name change }
{$EXTERNALSYM CRUC_NOTIFY}
CRUC_REMOVE = 1; { user name deleted }
{$EXTERNALSYM CRUC_REMOVE}
{ Word List Types: }
WLT_STRING = 0; { one string }
{$EXTERNALSYM WLT_STRING}
WLT_STRINGTABLE = 1; { array of strings }
{$EXTERNALSYM WLT_STRINGTABLE}
WLT_EMPTY = 2; { empty wordlist }
{$EXTERNALSYM WLT_EMPTY}
WLT_WORDLIST = 3; { handle to a wordlist }
{$EXTERNALSYM WLT_WORDLIST}
{ IEdit Background Options }
IEB_DEFAULT = 0; { default (use COLOR_WINDOW) }
{$EXTERNALSYM IEB_DEFAULT}
IEB_BRUSH = 1; { paint background with brush }
{$EXTERNALSYM IEB_BRUSH}
IEB_BIT_UL = 2; { bitmap, upper-left aligned }
{$EXTERNALSYM IEB_BIT_UL}
IEB_BIT_CENTER = 3; { bitmap, centered in control }
{$EXTERNALSYM IEB_BIT_CENTER}
IEB_BIT_TILE = 4; { bitmap, tiled repeatedly in ctl }
{$EXTERNALSYM IEB_BIT_TILE}
IEB_BIT_STRETCH = 5; { bitmap, stretched to fit ctl }
{$EXTERNALSYM IEB_BIT_STRETCH}
IEB_OWNERDRAW = 6; { parent window will draw background }
{$EXTERNALSYM IEB_OWNERDRAW}
{ IEdit Drawing Options }
IEDO_NONE = $0000; { no drawing }
{$EXTERNALSYM IEDO_NONE}
IEDO_FAST = $0001; { ink drawn as fast as possible (def) }
{$EXTERNALSYM IEDO_FAST}
IEDO_SAVEUPSTROKES = $0002; { save upstrokes }
{$EXTERNALSYM IEDO_SAVEUPSTROKES}
IEDO_RESERVED = $FFFC; { reserved bits }
{$EXTERNALSYM IEDO_RESERVED}
{ IEdit Input Options }
IEI_MOVE = $0001; { move ink into ctl }
{$EXTERNALSYM IEI_MOVE}
IEI_RESIZE = $0002; { resize ink to fit within ctl }
{$EXTERNALSYM IEI_RESIZE}
IEI_CROP = $0004; { discard ink outside of ctl }
{$EXTERNALSYM IEI_CROP}
IEI_DISCARD = $0008; { discard all ink if any outside ctl }
{$EXTERNALSYM IEI_DISCARD}
IEI_RESERVED = $FFF0; { reserved }
{$EXTERNALSYM IEI_RESERVED}
{ IEdit IE_GETINK options }
IEGI_ALL = $0000; { get all ink from control }
{$EXTERNALSYM IEGI_ALL}
IEGI_SELECTION = $0001; { get selected ink from control }
{$EXTERNALSYM IEGI_SELECTION}
{ IEdit IE_SETMODE/IE_GETMODE (mode) options }
IEMODE_READY = 0; { default inking, moving, sizing mode }
{$EXTERNALSYM IEMODE_READY}
IEMODE_ERASE = 1; { erasing Mode }
{$EXTERNALSYM IEMODE_ERASE}
IEMODE_LASSO = 2; { lasso selection mode }
{$EXTERNALSYM IEMODE_LASSO}
{ IEdit Notification Bits }
IEN_NULL = $0000; { null notification }
{$EXTERNALSYM IEN_NULL}
IEN_PDEVENT = $0001; { notify about pointing device events }
{$EXTERNALSYM IEN_PDEVENT}
IEN_PAINT = $0002; { send painting-related notifications }
{$EXTERNALSYM IEN_PAINT}
IEN_FOCUS = $0004; { send focus-related notifications }
{$EXTERNALSYM IEN_FOCUS}
IEN_SCROLL = $0008; { send scrolling notifications }
{$EXTERNALSYM IEN_SCROLL}
IEN_EDIT = $0010; { send editing/change notifications }
{$EXTERNALSYM IEN_EDIT}
IEN_PROPERTIES = $0020; { send properties dialog notification }
{$EXTERNALSYM IEN_PROPERTIES}
IEN_RESERVED = $FF80; { reserved }
{$EXTERNALSYM IEN_RESERVED}
{ IEdit Return Values }
IER_OK = 0; { success }
{$EXTERNALSYM IER_OK}
IER_NO = 0; { ctl cannot do request }
{$EXTERNALSYM IER_NO}
IER_YES = 1; { ctl can do request }
{$EXTERNALSYM IER_YES}
IER_ERROR = -1; { unspecified error; operation failed }
{$EXTERNALSYM IER_ERROR}
IER_PARAMERR = -2; { bogus lParam value, bad handle, etc }
{$EXTERNALSYM IER_PARAMERR}
IER_OWNERDRAW = -3; { can't set drawopts in ownerdraw ctl }
{$EXTERNALSYM IER_OWNERDRAW}
IER_SECURITY = -4; { security protection disallows action }
{$EXTERNALSYM IER_SECURITY}
IER_SELECTION = -5; { nothing selected in control }
{$EXTERNALSYM IER_SELECTION}
IER_SCALE = -6; { merge: incompatible scaling factors }
{$EXTERNALSYM IER_SCALE}
IER_MEMERR = -7; { memory error }
{$EXTERNALSYM IER_MEMERR}
IER_NOCOMMAND = -8; { tried IE_GETCOMMAND w/no command }
{$EXTERNALSYM IER_NOCOMMAND}
IER_NOGESTURE = -9; { tried IE_GETGESTURE w/no gesture }
{$EXTERNALSYM IER_NOGESTURE}
IER_NOPDEVENT = -10; { tried IE_GETPDEVENT but no event }
{$EXTERNALSYM IER_NOPDEVENT}
IER_NOTINPAINT = -11; { tried IE_GETPAINTSTRUCT but no paint }
{$EXTERNALSYM IER_NOTINPAINT}
IER_PENDATA = -12; { can't do request with NULL hpd in ctl }
{$EXTERNALSYM IER_PENDATA}
{ IEdit Recognition Options }
IEREC_NONE = $0000; { No recognition }
{$EXTERNALSYM IEREC_NONE}
IEREC_GESTURE = $0001; { Gesture recognition }
{$EXTERNALSYM IEREC_GESTURE}
{$DEFINE IEREC_ALL}
IEREC_RESERVED = $FFFE; { Reserved }
{$EXTERNALSYM IEREC_RESERVED}
{ IEdit Security Options }
IESEC_NOCOPY = $0001; { copying disallowed }
{$EXTERNALSYM IESEC_NOCOPY}
IESEC_NOCUT = $0002; { cutting disallowed }
{$EXTERNALSYM IESEC_NOCUT}
IESEC_NOPASTE = $0004; { pasting disallowed }
{$EXTERNALSYM IESEC_NOPASTE}
IESEC_NOUNDO = $0008; { undoing disallowed }
{$EXTERNALSYM IESEC_NOUNDO}
IESEC_NOINK = $0010; { inking disallowed }
{$EXTERNALSYM IESEC_NOINK}
IESEC_NOERASE = $0020; { erasing disallowed }
{$EXTERNALSYM IESEC_NOERASE}
IESEC_NOGET = $0040; { IE_GETINK message verboten }
{$EXTERNALSYM IESEC_NOGET}
IESEC_NOSET = $0080; { IE_SETINK message verboten }
{$EXTERNALSYM IESEC_NOSET}
IESEC_RESERVED = $FF00; { reserved }
{$EXTERNALSYM IESEC_RESERVED}
{ IEdit IE_SETFORMAT/IE_GETFORMAT options }
IESF_ALL = $0001; { set/get stk fmt of all ink }
{$EXTERNALSYM IESF_ALL}
IESF_SELECTION = $0002; { set/get stk fmt of selected ink }
{$EXTERNALSYM IESF_SELECTION}
IESF_STROKE = $0004; { set/get stk fmt of specified stroke }
{$EXTERNALSYM IESF_STROKE}
IESF_TIPCOLOR = $0008; { set color }
{$EXTERNALSYM IESF_TIPCOLOR}
IESF_TIPWIDTH = $0010; { set width }
{$EXTERNALSYM IESF_TIPWIDTH}
IESF_PENTIP = IESF_TIPCOLOR or IESF_TIPWIDTH;
{$EXTERNALSYM IESF_PENTIP}
{ IEdit IE_SETINK options }
IESI_REPLACE = $0000; { replace ink in control }
{$EXTERNALSYM IESI_REPLACE}
IESI_APPEND = $0001; { append ink to existing control ink }
{$EXTERNALSYM IESI_APPEND}
{ Ink Edit Control (IEdit) definitions }
{ IEdit Notifications }
IN_PDEVENT = (IEN_PDEVENT shl 8) or 0; { pointing device event occurred }
{$EXTERNALSYM IN_PDEVENT}
IN_ERASEBKGND = (IEN_NULL shl 8) or 1; { control needs bkgnd erased }
{$EXTERNALSYM IN_ERASEBKGND}
IN_PREPAINT = (IEN_PAINT shl 8) or 2; { before control paints its ink }
{$EXTERNALSYM IN_PREPAINT}
IN_PAINT = (IEN_NULL shl 8) or 3; { control needs to be painted }
{$EXTERNALSYM IN_PAINT}
IN_POSTPAINT = (IEN_PAINT shl 8) or 4; { after control has painted }
{$EXTERNALSYM IN_POSTPAINT}
IN_MODECHANGED = (IEN_EDIT shl 8) or 5; { mode changed }
{$EXTERNALSYM IN_MODECHANGED}
IN_CHANGE = (IEN_EDIT shl 8) or 6; { contents changed & painted }
{$EXTERNALSYM IN_CHANGE}
IN_UPDATE = (IEN_EDIT shl 8) or 7; { contents changed & !painted }
{$EXTERNALSYM IN_UPDATE}
IN_SETFOCUS = (IEN_FOCUS shl 8) or 8; { IEdit is getting focus }
{$EXTERNALSYM IN_SETFOCUS}
IN_KILLFOCUS = (IEN_FOCUS shl 8) or 9; { IEdit is losing focus }
{$EXTERNALSYM IN_KILLFOCUS}
IN_MEMERR = (IEN_NULL shl 8) or 10; { memory error }
{$EXTERNALSYM IN_MEMERR}
IN_HSCROLL = (IEN_SCROLL shl 8) or 11; { horz scrolled, not painted }
{$EXTERNALSYM IN_HSCROLL}
IN_VSCROLL = (IEN_SCROLL shl 8) or 12; { vert scrolled, not painted }
{$EXTERNALSYM IN_VSCROLL}
IN_GESTURE = (IEN_EDIT shl 8) or 13; { user has gestured on control }
{$EXTERNALSYM IN_GESTURE}
IN_COMMAND = (IEN_EDIT shl 8) or 14; { command selected from menu }
{$EXTERNALSYM IN_COMMAND}
IN_CLOSE = (IEN_NULL shl 8) or 15; { I-Edit is being closed }
{$EXTERNALSYM IN_CLOSE}
IN_PROPERTIES = (IEN_PROPERTIES shl 8) or 16; { properties dialog }
{$EXTERNALSYM IN_PROPERTIES}
{ PenIn[k]put API constants }
{ Default Processing }
LRET_DONE = 1;
{$EXTERNALSYM LRET_DONE}
LRET_ABORT = -1;
{$EXTERNALSYM LRET_ABORT}
LRET_HRC = -2;
{$EXTERNALSYM LRET_HRC}
LRET_HPENDATA = -3;
{$EXTERNALSYM LRET_HPENDATA}
LRET_PRIVATE = -4;
{$EXTERNALSYM LRET_PRIVATE}
{ Inkput: }
PCMR_OK = 0;
{$EXTERNALSYM PCMR_OK}
PCMR_ALREADYCOLLECTING = -1;
{$EXTERNALSYM PCMR_ALREADYCOLLECTING}
PCMR_INVALIDCOLLECTION = -2;
{$EXTERNALSYM PCMR_INVALIDCOLLECTION}
PCMR_EVENTLOCK = -3;
{$EXTERNALSYM PCMR_EVENTLOCK}
PCMR_INVALID_PACKETID = -4;
{$EXTERNALSYM PCMR_INVALID_PACKETID}
PCMR_TERMTIMEOUT = -5;
{$EXTERNALSYM PCMR_TERMTIMEOUT}
PCMR_TERMRANGE = -6;
{$EXTERNALSYM PCMR_TERMRANGE}
PCMR_TERMPENUP = -7;
{$EXTERNALSYM PCMR_TERMPENUP}
PCMR_TERMEX = -8;
{$EXTERNALSYM PCMR_TERMEX}
PCMR_TERMBOUND = -9;
{$EXTERNALSYM PCMR_TERMBOUND}
PCMR_APPTERMINATED = -10;
{$EXTERNALSYM PCMR_APPTERMINATED}
PCMR_TAP = -11; { alias PCMR_TAPNHOLD_LAST }
{$EXTERNALSYM PCMR_TAP}
PCMR_SELECT = -12; { ret because of tap & hold }
{$EXTERNALSYM PCMR_SELECT}
PCMR_OVERFLOW = -13;
{$EXTERNALSYM PCMR_OVERFLOW}
PCMR_ERROR = -14; { parameter or unspecified error }
{$EXTERNALSYM PCMR_ERROR}
PCMR_DISPLAYERR = -15; { inking only }
{$EXTERNALSYM PCMR_DISPLAYERR}
PCMR_TERMINVERT = -16; { termination due to tapping opposite end of pen }
{$EXTERNALSYM PCMR_TERMINVERT}
PII_INKCLIPRECT = $0001;
{$EXTERNALSYM PII_INKCLIPRECT}
PII_INKSTOPRECT = $0002;
{$EXTERNALSYM PII_INKSTOPRECT}
PII_INKCLIPRGN = $0004;
{$EXTERNALSYM PII_INKCLIPRGN}
PII_INKSTOPRGN = $0008;
{$EXTERNALSYM PII_INKSTOPRGN}
PII_INKPENTIP = $0010;
{$EXTERNALSYM PII_INKPENTIP}
PII_SAVEBACKGROUND = $0020;
{$EXTERNALSYM PII_SAVEBACKGROUND}
PII_CLIPSTOP = $0040;
{$EXTERNALSYM PII_CLIPSTOP}
PIT_RGNBOUND = $0001;
{$EXTERNALSYM PIT_RGNBOUND}
PIT_RGNEXCLUDE = $0002;
{$EXTERNALSYM PIT_RGNEXCLUDE}
PIT_TIMEOUT = $0004;
{$EXTERNALSYM PIT_TIMEOUT}
PIT_TAPNHOLD = $0008;
{$EXTERNALSYM PIT_TAPNHOLD}
{ Misc RC Definitions: }
CL_NULL = 0;
{$EXTERNALSYM CL_NULL}
CL_MINIMUM = 1; { minimum confidence level }
{$EXTERNALSYM CL_MINIMUM}
CL_MAXIMUM = 100; { max (require perfect recog) }
{$EXTERNALSYM CL_MAXIMUM}
cwRcReservedMax = 8; { rc.rgwReserved[cwRcReservedMax] }
{$EXTERNALSYM cwRcReservedMax}
ENUM_MINIMUM = 1;
{$EXTERNALSYM ENUM_MINIMUM}
ENUM_MAXIMUM = 4096;
{$EXTERNALSYM ENUM_MAXIMUM}
HKP_SETHOOK = 0; { SetRecogHook() }
{$EXTERNALSYM HKP_SETHOOK}
HKP_UNHOOK = $FFFF;
{$EXTERNALSYM HKP_UNHOOK}
HWR_RESULTS = 0;
{$EXTERNALSYM HWR_RESULTS}
HWR_APPWIDE = 1;
{$EXTERNALSYM HWR_APPWIDE}
iSycNull = -1;
{$EXTERNALSYM iSycNull}
LPDFNULL = 0; { nil }
{$EXTERNALSYM LPDFNULL}
MAXDICTIONARIES = 16; { rc.rglpdf[MAXDICTIONARIES] }
{$EXTERNALSYM MAXDICTIONARIES}
wPntAll = $FFFF;
{$EXTERNALSYM wPntAll}
cbRcLanguageMax = 44; { rc.lpLanguage[cbRcLanguageMax] }
{$EXTERNALSYM cbRcLanguageMax}
cbRcUserMax = 32; { rc.lpUser[cbRcUserMax] }
{$EXTERNALSYM cbRcUserMax}
cbRcrgbfAlcMax = 32; { rc.rgbfAlc[cbRcrgbfAlcMax] }
{$EXTERNALSYM cbRcrgbfAlcMax}
RC_WDEFAULT = $FFFF;
{$EXTERNALSYM RC_WDEFAULT}
RC_LDEFAULT = $FFFFFFFF;
{$EXTERNALSYM RC_LDEFAULT}
RC_WDEFAULTFLAGS = $8000;
{$EXTERNALSYM RC_WDEFAULTFLAGS}
// RC_LDEFAULTFLAGS = $80000000; defined above
{ CorrectWriting() API constants: }
{ LOWORD values: }
CWR_REPLACECR = $0001; { replace carriage ret (\r) with space }
{$EXTERNALSYM CWR_REPLACECR}
CWR_STRIPCR = CWR_REPLACECR; { alias for backward compatibility }
{$EXTERNALSYM CWR_STRIPCR}
CWR_STRIPLF = $0002; { strip linefeed (\n) }
{$EXTERNALSYM CWR_STRIPLF}
CWR_REPLACETAB = $0004; { replace tab with space (\t) }
{$EXTERNALSYM CWR_REPLACETAB}
CWR_STRIPTAB = CWR_REPLACETAB; { alias for backward compatibility }
{$EXTERNALSYM CWR_STRIPTAB}
CWR_SINGLELINEEDIT = CWR_REPLACECR or CWR_STRIPLF or CWR_REPLACETAB; { all of the above }
{$EXTERNALSYM CWR_SINGLELINEEDIT}
CWR_INSERT = $0008; { use "Insert Text" instead of "Edit Text" in the title }
{$EXTERNALSYM CWR_INSERT}
CWR_TITLE = $0010; { interpret dwParam as title string }
{$EXTERNALSYM CWR_TITLE}
CWR_KKCONVERT = $0020; { JPN initiate IME }
{$EXTERNALSYM CWR_KKCONVERT}
CWR_SIMPLE = $0040; { simple dialog (lens) }
{$EXTERNALSYM CWR_SIMPLE}
CWR_HEDIT = $0080; { HEDIT CorrectWriting }
{$EXTERNALSYM CWR_HEDIT}
CWR_KEYBOARD = $0100; { keyboard lens }
{$EXTERNALSYM CWR_KEYBOARD}
CWR_BOXES = $0200; { bedit lens }
{$EXTERNALSYM CWR_BOXES}
{ HIWORD values: keyboard types }
CWRK_DEFAULT = 0; { default keyboard type }
{$EXTERNALSYM CWRK_DEFAULT}
CWRK_BASIC = 1; { basic keyboard }
{$EXTERNALSYM CWRK_BASIC}
CWRK_FULL = 2; { full keyboard }
{$EXTERNALSYM CWRK_FULL}
CWRK_NUMPAD = 3; { numeric keyboard }
{$EXTERNALSYM CWRK_NUMPAD}
CWRK_TELPAD = 4; { Telephone type keyboard }
{$EXTERNALSYM CWRK_TELPAD}
GPMI_OK = 0;
{$EXTERNALSYM GPMI_OK}
GPMI_INVALIDPMI = $8000;
{$EXTERNALSYM GPMI_INVALIDPMI}
{ inkwidth limits }
INKWIDTH_MINIMUM = 0; { 0 invisible, 1..15 pixel widths }
{$EXTERNALSYM INKWIDTH_MINIMUM}
INKWIDTH_MAXIMUM = 15; { max width in pixels }
{$EXTERNALSYM INKWIDTH_MAXIMUM}
{ Get/SetPenMiscInfo: }
{ PMI_RCCHANGE is for WM_GLOBALRCCHANGE compatability only: }
PMI_RCCHANGE = 0; { invalid for Get/SetPenMiscInfo }
{$EXTERNALSYM PMI_RCCHANGE}
PMI_BEDIT = 1; { boxed edit info }
{$EXTERNALSYM PMI_BEDIT}
PMI_IMECOLOR = 2; { input method editor color }
{$EXTERNALSYM PMI_IMECOLOR}
PMI_CXTABLET = 3; { tablet width }
{$EXTERNALSYM PMI_CXTABLET}
PMI_CYTABLET = 4; { tablet height }
{$EXTERNALSYM PMI_CYTABLET}
PMI_PENTIP = 6; { pen tip: color, width, nib }
{$EXTERNALSYM PMI_PENTIP}
PMI_ENABLEFLAGS = 7; { PWE_xx enablements }
{$EXTERNALSYM PMI_ENABLEFLAGS}
PMI_TIMEOUT = 8; { handwriting timeout }
{$EXTERNALSYM PMI_TIMEOUT}
PMI_TIMEOUTGEST = 9; { gesture timeout }
{$EXTERNALSYM PMI_TIMEOUTGEST}
PMI_TIMEOUTSEL = 10; { select (press&hold) timeout }
{$EXTERNALSYM PMI_TIMEOUTSEL}
PMI_SYSFLAGS = 11; { component load configuration }
{$EXTERNALSYM PMI_SYSFLAGS}
PMI_INDEXFROMRGB = 12; { color table index from RGB }
{$EXTERNALSYM PMI_INDEXFROMRGB}
PMI_RGBFROMINDEX = 13; { RGB from color table index }
{$EXTERNALSYM PMI_RGBFROMINDEX}
PMI_SYSREC = 14; { handle to system recognizer }
{$EXTERNALSYM PMI_SYSREC}
PMI_TICKREF = 15; { reference absolute time }
{$EXTERNALSYM PMI_TICKREF}
PMI_SAVE = $1000; { save setting to file }
{$EXTERNALSYM PMI_SAVE}
{ Set/GetPenMiscInfo/PMI_ENABLEFLAGS flags: }
PWE_AUTOWRITE = $0001; { pen functionality where IBeam }
{$EXTERNALSYM PWE_AUTOWRITE}
PWE_ACTIONHANDLES = $0002; { action handles in controls }
{$EXTERNALSYM PWE_ACTIONHANDLES}
PWE_INPUTCURSOR = $0004; { show cursor while writing }
{$EXTERNALSYM PWE_INPUTCURSOR}
PWE_LENS = $0008; { allow lens popup }
{$EXTERNALSYM PWE_LENS}
{ GetPenMiscInfo/PMI_SYSFLAGS flags: }
PWF_RC1 = $0001; { Windows for Pen 1.0 RC support }
{$EXTERNALSYM PWF_RC1}
PWF_PEN = $0004; { pen drv loaded & hdwe init'd }
{$EXTERNALSYM PWF_PEN}
PWF_INKDISPLAY = $0008; { ink-compatible display drv loaded }
{$EXTERNALSYM PWF_INKDISPLAY}
PWF_RECOGNIZER = $0010; { system recognizer installed }
{$EXTERNALSYM PWF_RECOGNIZER}
PWF_BEDIT = $0100; { boxed edit support }
{$EXTERNALSYM PWF_BEDIT}
PWF_HEDIT = $0200; { free input edit support }
{$EXTERNALSYM PWF_HEDIT}
PWF_IEDIT = $0400; { ink edit support }
{$EXTERNALSYM PWF_IEDIT}
PWF_ENHANCED = $1000; { enh features (gest, 1ms timing) }
{$EXTERNALSYM PWF_ENHANCED}
PWF_FULL = PWF_RC1 or PWF_PEN or PWF_INKDISPLAY or PWF_RECOGNIZER or
PWF_BEDIT or PWF_HEDIT or PWF_IEDIT or PWF_ENHANCED;
{$EXTERNALSYM PWF_FULL}
{ SetPenAppFlags API constants: }
RPA_DEFAULT = $0001; { = RPA_HEDIT }
{$EXTERNALSYM RPA_DEFAULT}
RPA_HEDIT = $0001; { convert EDIT to HEDIT }
{$EXTERNALSYM RPA_HEDIT}
RPA_KANJIFIXEDBEDIT = $0002;
{$EXTERNALSYM RPA_KANJIFIXEDBEDIT}
RPA_DBCSPRIORITY = $0004; { assume DBCS has priority (Japan) }
{$EXTERNALSYM RPA_DBCSPRIORITY}
PMIR_OK = 0;
{$EXTERNALSYM PMIR_OK}
PMIR_INDEX = -1;
{$EXTERNALSYM PMIR_INDEX}
PMIR_VALUE = -2;
{$EXTERNALSYM PMIR_VALUE}
PMIR_INVALIDBOXEDITINFO = -3;
{$EXTERNALSYM PMIR_INVALIDBOXEDITINFO}
PMIR_INIERROR = -4;
{$EXTERNALSYM PMIR_INIERROR}
PMIR_ERROR = -5;
{$EXTERNALSYM PMIR_ERROR}
PMIR_NA = -6;
{$EXTERNALSYM PMIR_NA}
SPMI_OK = 0;
{$EXTERNALSYM SPMI_OK}
SPMI_INVALIDBOXEDITINFO = 1;
{$EXTERNALSYM SPMI_INVALIDBOXEDITINFO}
SPMI_INIERROR = 2;
{$EXTERNALSYM SPMI_INIERROR}
SPMI_INVALIDPMI = $8000;
{$EXTERNALSYM SPMI_INVALIDPMI}
{ RC Options and Flags: }
{ RC Direction: }
RCD_DEFAULT = 0; { def none }
{$EXTERNALSYM RCD_DEFAULT}
RCD_LR = 1; { left to right like English }
{$EXTERNALSYM RCD_LR}
RCD_RL = 2; { right to left like Arabic }
{$EXTERNALSYM RCD_RL}
RCD_TB = 3; { top to bottom like Japanese }
{$EXTERNALSYM RCD_TB}
RCD_BT = 4; { bottom to top like some Chinese }
{$EXTERNALSYM RCD_BT}
{ RC International Preferences: }
RCIP_ALLANSICHAR = $0001; { all ANSI chars }
{$EXTERNALSYM RCIP_ALLANSICHAR}
RCIP_MASK = $0001;
{$EXTERNALSYM RCIP_MASK}
{ RC Options: }
RCO_NOPOINTEREVENT = $00000001; { no recog tap, tap/hold }
{$EXTERNALSYM RCO_NOPOINTEREVENT}
RCO_SAVEALLDATA = $00000002; { save pen data like upstrokes }
{$EXTERNALSYM RCO_SAVEALLDATA}
RCO_SAVEHPENDATA = $00000004; { save pen data for app }
{$EXTERNALSYM RCO_SAVEHPENDATA}
RCO_NOFLASHUNKNOWN = $00000008; { no ? cursor on unknown }
{$EXTERNALSYM RCO_NOFLASHUNKNOWN}
RCO_TABLETCOORD = $00000010; { tablet coords used in RC }
{$EXTERNALSYM RCO_TABLETCOORD}
RCO_NOSPACEBREAK = $00000020; { no space break recog -> dict }
{$EXTERNALSYM RCO_NOSPACEBREAK}
RCO_NOHIDECURSOR = $00000040; { display cursor during inking }
{$EXTERNALSYM RCO_NOHIDECURSOR}
RCO_NOHOOK = $00000080; { disallow ink hook (passwords) }
{$EXTERNALSYM RCO_NOHOOK}
RCO_BOXED = $00000100; { valid rc.guide provided }
{$EXTERNALSYM RCO_BOXED}
RCO_SUGGEST = $00000200; { for dict suggest }
{$EXTERNALSYM RCO_SUGGEST}
RCO_DISABLEGESMAP = $00000400; { disable gesture mapping }
{$EXTERNALSYM RCO_DISABLEGESMAP}
RCO_NOFLASHCURSOR = $00000800; { no cursor feedback }
{$EXTERNALSYM RCO_NOFLASHCURSOR}
RCO_BOXCROSS = $00001000; { show + at boxedit center }
{$EXTERNALSYM RCO_BOXCROSS}
RCO_COLDRECOG = $00008000; { result is from cold recog }
{$EXTERNALSYM RCO_COLDRECOG}
RCO_SAVEBACKGROUND = $00010000; { Save background from ink }
{$EXTERNALSYM RCO_SAVEBACKGROUND}
RCO_DODEFAULT = $00020000; { do default gesture processing }
{$EXTERNALSYM RCO_DODEFAULT}
{ RC Orientation of Tablet: }
RCOR_NORMAL = 1; { tablet not rotated }
{$EXTERNALSYM RCOR_NORMAL}
RCOR_RIGHT = 2; { rotated 90 deg anticlockwise }
{$EXTERNALSYM RCOR_RIGHT}
RCOR_UPSIDEDOWN = 3; { rotated 180 deg }
{$EXTERNALSYM RCOR_UPSIDEDOWN}
RCOR_LEFT = 4; { rotated 90 deg clockwise }
{$EXTERNALSYM RCOR_LEFT}
{ RC Preferences: }
RCP_LEFTHAND = $0001; { left handed input }
{$EXTERNALSYM RCP_LEFTHAND}
RCP_MAPCHAR = $0004; { fill in syg.lpsyc (ink) for training }
{$EXTERNALSYM RCP_MAPCHAR}
{ RCRESULT wResultsType values: }
RCRT_DEFAULT = $0000; { normal ret }
{$EXTERNALSYM RCRT_DEFAULT}
RCRT_UNIDENTIFIED = $0001; { result contains unidentified results }
{$EXTERNALSYM RCRT_UNIDENTIFIED}
RCRT_GESTURE = $0002; { result is a gesture }
{$EXTERNALSYM RCRT_GESTURE}
RCRT_NOSYMBOLMATCH = $0004; { nothing recognized (no ink match) }
{$EXTERNALSYM RCRT_NOSYMBOLMATCH}
RCRT_PRIVATE = $4000; { recognizer-specific symbol }
{$EXTERNALSYM RCRT_PRIVATE}
RCRT_NORECOG = $8000; { no recog attempted, only data ret }
{$EXTERNALSYM RCRT_NORECOG}
RCRT_ALREADYPROCESSED = $0008; { GestMgr hooked it }
{$EXTERNALSYM RCRT_ALREADYPROCESSED}
RCRT_GESTURETRANSLATED = $0010; { GestMgr translated it to ANSI value }
{$EXTERNALSYM RCRT_GESTURETRANSLATED}
RCRT_GESTURETOKEYS = $0020; { ditto to set of virtual keys }
{$EXTERNALSYM RCRT_GESTURETOKEYS}
{ RC Result Return Mode specification: }
RRM_STROKE = 0; { return results after each stroke }
{$EXTERNALSYM RRM_STROKE}
RRM_SYMBOL = 1; { per symbol (e.g. boxed edits) }
{$EXTERNALSYM RRM_SYMBOL}
RRM_WORD = 2; { on recog of a word }
{$EXTERNALSYM RRM_WORD}
RRM_NEWLINE = 3; { on recog of a line break }
{$EXTERNALSYM RRM_NEWLINE}
RRM_COMPLETE = 16; { on PCM_xx specified completion }
{$EXTERNALSYM RRM_COMPLETE}
TPT_CLOSEST = $0001; { Assign to the closest target }
{$EXTERNALSYM TPT_CLOSEST}
TPT_INTERSECTINK = $0002; { target with intersecting ink }
{$EXTERNALSYM TPT_INTERSECTINK}
TPT_TEXTUAL = $0004; { apply textual heuristics }
{$EXTERNALSYM TPT_TEXTUAL}
TPT_DEFAULT = TPT_TEXTUAL or TPT_INTERSECTINK or TPT_CLOSEST;
{$EXTERNALSYM TPT_DEFAULT}
{ Virtual Event Layer: }
VWM_MOUSEMOVE = $0001;
{$EXTERNALSYM VWM_MOUSEMOVE}
VWM_MOUSELEFTDOWN = $0002;
{$EXTERNALSYM VWM_MOUSELEFTDOWN}
VWM_MOUSELEFTUP = $0004;
{$EXTERNALSYM VWM_MOUSELEFTUP}
VWM_MOUSERIGHTDOWN = $0008;
{$EXTERNALSYM VWM_MOUSERIGHTDOWN}
VWM_MOUSERIGHTUP = $0010;
{$EXTERNALSYM VWM_MOUSERIGHTUP}
{ Messages and Defines }
WM_RCRESULT = WM_PENWINFIRST+1; { $381 }
{$EXTERNALSYM WM_RCRESULT}
WM_HOOKRCRESULT = WM_PENWINFIRST+2; { $382 }
{$EXTERNALSYM WM_HOOKRCRESULT}
WM_PENMISCINFO = WM_PENWINFIRST+3; { $383 }
{$EXTERNALSYM WM_PENMISCINFO}
WM_GLOBALRCCHANGE = WM_PENWINFIRST+3; { alias }
{$EXTERNALSYM WM_GLOBALRCCHANGE}
WM_SKB = WM_PENWINFIRST+4; { $384 }
{$EXTERNALSYM WM_SKB}
WM_PENCTL = WM_PENWINFIRST+5; { $385 }
{$EXTERNALSYM WM_PENCTL}
WM_HEDITCTL = WM_PENWINFIRST+5; { FBC: alias }
{$EXTERNALSYM WM_HEDITCTL}
{ WM_HEDITCTL (WM_PENCTL) wParam options: }
HE_GETRC = 3; { FBC: get RC from HEDIT/BEDIT control }
{$EXTERNALSYM HE_GETRC}
HE_SETRC = 4; { FBC: ditto set }
{$EXTERNALSYM HE_SETRC}
HE_GETINFLATE = 5; { FBC: get inflate rect }
{$EXTERNALSYM HE_GETINFLATE}
HE_SETINFLATE = 6; { FBC: ditto set }
{$EXTERNALSYM HE_SETINFLATE}
HE_GETUNDERLINE = 7; { get underline mode }
{$EXTERNALSYM HE_GETUNDERLINE}
HE_SETUNDERLINE = 8; { ditto set }
{$EXTERNALSYM HE_SETUNDERLINE}
HE_GETINKHANDLE = 9; { get handle to captured ink }
{$EXTERNALSYM HE_GETINKHANDLE}
HE_SETINKMODE = 10; { begin HEDIT cold recog mode }
{$EXTERNALSYM HE_SETINKMODE}
HE_STOPINKMODE = 11; { end cold recog mode }
{$EXTERNALSYM HE_STOPINKMODE}
HE_GETRCRESULTCODE = 12; { FBC: result of recog after HN_ENDREC }
{$EXTERNALSYM HE_GETRCRESULTCODE}
HE_DEFAULTFONT = 13; { switch BEDIT to def font }
{$EXTERNALSYM HE_DEFAULTFONT}
HE_CHARPOSITION = 14; { BEDIT byte offset -> char position }
{$EXTERNALSYM HE_CHARPOSITION}
HE_CHAROFFSET = 15; { BEDIT char position -> byte offset }
{$EXTERNALSYM HE_CHAROFFSET}
HE_GETBOXLAYOUT = 20; { get BEDIT layout }
{$EXTERNALSYM HE_GETBOXLAYOUT}
HE_SETBOXLAYOUT = 21; { ditto set }
{$EXTERNALSYM HE_SETBOXLAYOUT}
HE_GETRCRESULT = 22; { FBC: get RCRESULT after HN_RCRESULT }
{$EXTERNALSYM HE_GETRCRESULT}
HE_KKCONVERT = 30; { JPN start kana-kanji conversion }
{$EXTERNALSYM HE_KKCONVERT}
HE_GETKKCONVERT = 31; { JPN get KK state }
{$EXTERNALSYM HE_GETKKCONVERT}
HE_CANCELKKCONVERT = 32; { JPN cancel KK conversion }
{$EXTERNALSYM HE_CANCELKKCONVERT}
HE_FIXKKCONVERT = 33; { JPN force KK result }
{$EXTERNALSYM HE_FIXKKCONVERT}
HE_GETKKSTATUS = 34; { JPN get KK UI state }
{$EXTERNALSYM HE_GETKKSTATUS}
HE_KKNOCONVERT = 35; { JPN revert conversion }
{$EXTERNALSYM HE_KKNOCONVERT}
HE_SETIMEDEFAULT = 36; { JPN set a range of DCS }
{$EXTERNALSYM HE_SETIMEDEFAULT}
HE_GETIMEDEFAULT = 37; { JPN get a range of DCS }
{$EXTERNALSYM HE_GETIMEDEFAULT}
HE_ENABLEALTLIST = 40; { en/disable dropdown recog alt's }
{$EXTERNALSYM HE_ENABLEALTLIST}
HE_SHOWALTLIST = 41; { show dropdown (assume enabled) }
{$EXTERNALSYM HE_SHOWALTLIST}
HE_HIDEALTLIST = 42; { hide dropdown alternatives }
{$EXTERNALSYM HE_HIDEALTLIST}
HE_GETLENSTYPE = 43; { get lens type: CWR_ and CWRK_ flags }
{$EXTERNALSYM HE_GETLENSTYPE}
HE_SETLENSTYPE = 44; { set lens type: CWR_ and CWRK_ flags }
{$EXTERNALSYM HE_SETLENSTYPE}
{ JPN Kana-to-Kanji conversion subfunctions: }
HEKK_DEFAULT = 0; { def }
{$EXTERNALSYM HEKK_DEFAULT}
HEKK_CONVERT = 1; { convert in place }
{$EXTERNALSYM HEKK_CONVERT}
HEKK_CANDIDATE = 2; { start conversion dialog }
{$EXTERNALSYM HEKK_CANDIDATE}
HEKK_DBCSCHAR = 3; { convert to DBCS }
{$EXTERNALSYM HEKK_DBCSCHAR}
HEKK_SBCSCHAR = 4; { convert to SBCS }
{$EXTERNALSYM HEKK_SBCSCHAR}
HEKK_HIRAGANA = 5; { convert to hiragana }
{$EXTERNALSYM HEKK_HIRAGANA}
HEKK_KATAKANA = 6; { convert to katakana }
{$EXTERNALSYM HEKK_KATAKANA}
{ JPN Return value of HE_GETKKSTATUS }
HEKKR_PRECONVERT = 1; { in pre conversion mode }
{$EXTERNALSYM HEKKR_PRECONVERT}
HEKKR_CONVERT = 2; { in mid conversion mode }
{$EXTERNALSYM HEKKR_CONVERT}
HEKKR_TEMPCONFIRM = 3; { in post conversion mode }
{$EXTERNALSYM HEKKR_TEMPCONFIRM}
{ HE_STOPINKMODE (stop cold recog) options: }
HEP_NORECOG = 0; { don't recog ink }
{$EXTERNALSYM HEP_NORECOG}
HEP_RECOG = 1; { recog ink }
{$EXTERNALSYM HEP_RECOG}
HEP_WAITFORTAP = 2; { recog after tap in window }
{$EXTERNALSYM HEP_WAITFORTAP}
{ WM_PENCTL notifications: }
HN_ENDREC = 4; { recog complete }
{$EXTERNALSYM HN_ENDREC}
HN_DELAYEDRECOGFAIL = 5; { HE_STOPINKMODE (cold recog) failed }
{$EXTERNALSYM HN_DELAYEDRECOGFAIL}
HN_RESULT = 20; { HEDIT/BEDIT has received new ink/recognition result }
{$EXTERNALSYM HN_RESULT}
HN_RCRESULT = HN_RESULT;
{$EXTERNALSYM HN_RCRESULT}
HN_ENDKKCONVERT = 30; { JPN KK conversion complete }
{$EXTERNALSYM HN_ENDKKCONVERT}
HN_BEGINDIALOG = 40; { Lens/EditText/garbage detection dialog }
{$EXTERNALSYM HN_BEGINDIALOG}
{ is about to come up on this hedit/bedit }
HN_ENDDIALOG = 41; { Lens/EditText/garbage detection dialog }
{$EXTERNALSYM HN_ENDDIALOG}
{ has just been destroyed }
{ Messages common with other controls: }
IE_GETMODIFY = EM_GETMODIFY; { gets the mod'n (dirty) bit }
{$EXTERNALSYM IE_GETMODIFY}
IE_SETMODIFY = EM_SETMODIFY; { sets the mod'n (dirty) bit }
{$EXTERNALSYM IE_SETMODIFY}
IE_CANUNDO = EM_CANUNDO; { queries whether can undo }
{$EXTERNALSYM IE_CANUNDO}
IE_UNDO = EM_UNDO; { undo }
{$EXTERNALSYM IE_UNDO}
IE_EMPTYUNDOBUFFER = EM_EMPTYUNDOBUFFER; { clears IEDIT undo buffer }
{$EXTERNALSYM IE_EMPTYUNDOBUFFER}
IE_MSGFIRST = WM_USER+150; { $496 = 1174 }
{$EXTERNALSYM IE_MSGFIRST}
{ IEdit common messages: }
IE_GETINK = IE_MSGFIRST+0; { gets ink from the control }
{$EXTERNALSYM IE_GETINK}
IE_SETINK = IE_MSGFIRST+1; { sets ink into the control }
{$EXTERNALSYM IE_SETINK}
IE_GETPENTIP = IE_MSGFIRST+2; { gets the cur def ink pentip }
{$EXTERNALSYM IE_GETPENTIP}
IE_SETPENTIP = IE_MSGFIRST+3; { sets the cur def ink pentip }
{$EXTERNALSYM IE_SETPENTIP}
IE_GETERASERTIP = IE_MSGFIRST+4; { gets the cur eraser pentip }
{$EXTERNALSYM IE_GETERASERTIP}
IE_SETERASERTIP = IE_MSGFIRST+5; { sets the cur eraser pentip }
{$EXTERNALSYM IE_SETERASERTIP}
IE_GETBKGND = IE_MSGFIRST+6; { gets the bkgnd options }
{$EXTERNALSYM IE_GETBKGND}
IE_SETBKGND = IE_MSGFIRST+7; { sets the bkgnd options }
{$EXTERNALSYM IE_SETBKGND}
IE_GETGRIDORIGIN = IE_MSGFIRST+8; { gets the bkgnd grid origin }
{$EXTERNALSYM IE_GETGRIDORIGIN}
IE_SETGRIDORIGIN = IE_MSGFIRST+9; { sets the bkgnd grid origin }
{$EXTERNALSYM IE_SETGRIDORIGIN}
IE_GETGRIDPEN = IE_MSGFIRST+10; { gets the bkgnd grid pen }
{$EXTERNALSYM IE_GETGRIDPEN}
IE_SETGRIDPEN = IE_MSGFIRST+11; { sets the bkgnd grid pen }
{$EXTERNALSYM IE_SETGRIDPEN}
IE_GETGRIDSIZE = IE_MSGFIRST+12; { gets the bkgnd grid size }
{$EXTERNALSYM IE_GETGRIDSIZE}
IE_SETGRIDSIZE = IE_MSGFIRST+13; { sets the bkgnd grid size }
{$EXTERNALSYM IE_SETGRIDSIZE}
IE_GETMODE = IE_MSGFIRST+14; { gets the current pen mode }
{$EXTERNALSYM IE_GETMODE}
IE_SETMODE = IE_MSGFIRST+15; { sets the current pen mode }
{$EXTERNALSYM IE_SETMODE}
IE_GETINKRECT = IE_MSGFIRST+16; { gets the rectbound of the ink }
{$EXTERNALSYM IE_GETINKRECT}
{ IEdit-specific messages: }
IE_GETAPPDATA = IE_MSGFIRST+34; { gets the user-defined datum }
{$EXTERNALSYM IE_GETAPPDATA}
IE_SETAPPDATA = IE_MSGFIRST+35; { sets the user-defined data }
{$EXTERNALSYM IE_SETAPPDATA}
IE_GETDRAWOPTS = IE_MSGFIRST+36; { gets the ink draw options }
{$EXTERNALSYM IE_GETDRAWOPTS}
IE_SETDRAWOPTS = IE_MSGFIRST+37; { sets the ink options }
{$EXTERNALSYM IE_SETDRAWOPTS}
IE_GETFORMAT = IE_MSGFIRST+38; { gets format of stroke(s) }
{$EXTERNALSYM IE_GETFORMAT}
IE_SETFORMAT = IE_MSGFIRST+39; { sets format of stroke(s) }
{$EXTERNALSYM IE_SETFORMAT}
IE_GETINKINPUT = IE_MSGFIRST+40; { gets the ink input option }
{$EXTERNALSYM IE_GETINKINPUT}
IE_SETINKINPUT = IE_MSGFIRST+41; { sets the ink input option }
{$EXTERNALSYM IE_SETINKINPUT}
IE_GETNOTIFY = IE_MSGFIRST+42; { gets the notification bits }
{$EXTERNALSYM IE_GETNOTIFY}
IE_SETNOTIFY = IE_MSGFIRST+43; { sets the notification bits }
{$EXTERNALSYM IE_SETNOTIFY}
IE_GETRECOG = IE_MSGFIRST+44; { gets recognition options }
{$EXTERNALSYM IE_GETRECOG}
IE_SETRECOG = IE_MSGFIRST+45; { sets recognition options }
{$EXTERNALSYM IE_SETRECOG}
IE_GETSECURITY = IE_MSGFIRST+46; { gets the security options }
{$EXTERNALSYM IE_GETSECURITY}
IE_SETSECURITY = IE_MSGFIRST+47; { sets the security options }
{$EXTERNALSYM IE_SETSECURITY}
IE_GETSEL = IE_MSGFIRST+48; { gets sel status of a stroke }
{$EXTERNALSYM IE_GETSEL}
IE_SETSEL = IE_MSGFIRST+49; { sets sel status of a stroke }
{$EXTERNALSYM IE_SETSEL}
IE_DOCOMMAND = IE_MSGFIRST+50; { send command to IEdit }
{$EXTERNALSYM IE_DOCOMMAND}
IE_GETCOMMAND = IE_MSGFIRST+51; { gets user command }
{$EXTERNALSYM IE_GETCOMMAND}
IE_GETCOUNT = IE_MSGFIRST+52; { gets count of strks in I-Edit }
{$EXTERNALSYM IE_GETCOUNT}
IE_GETGESTURE = IE_MSGFIRST+53; { gets details on user gesture }
{$EXTERNALSYM IE_GETGESTURE}
IE_GETMENU = IE_MSGFIRST+54; { gets handle to pop-up menu }
{$EXTERNALSYM IE_GETMENU}
IE_GETPAINTDC = IE_MSGFIRST+55; { gets the HDC for painting }
{$EXTERNALSYM IE_GETPAINTDC}
IE_GETPDEVENT = IE_MSGFIRST+56; { gets details of last pd event }
{$EXTERNALSYM IE_GETPDEVENT}
IE_GETSELCOUNT = IE_MSGFIRST+57; { gets count of selected strks }
{$EXTERNALSYM IE_GETSELCOUNT}
IE_GETSELITEMS = IE_MSGFIRST+58; { gets indices of all sel strks }
{$EXTERNALSYM IE_GETSELITEMS}
IE_GETSTYLE = IE_MSGFIRST+59; { gets IEdit control styles }
{$EXTERNALSYM IE_GETSTYLE}
{ (H)Edit Control: }
{ CTLINITHEDIT.dwFlags values }
CIH_NOGDMSG = $0001; { disable garbage detection message box for this edit }
{$EXTERNALSYM CIH_NOGDMSG}
CIH_NOACTIONHANDLE = $0002; { disable action handles for this edit }
{$EXTERNALSYM CIH_NOACTIONHANDLE}
CIH_NOEDITTEXT = $0004; { disable Lens/Edit/Insert text for this edit }
{$EXTERNALSYM CIH_NOEDITTEXT}
CIH_NOFLASHCURSOR = $0008; { don't flash cursor on tap-n-hold in this (h)edit }
{$EXTERNALSYM CIH_NOFLASHCURSOR}
{ Boxed Edit Control: }
{ box edit alternative list: }
HEAL_DEFAULT = -1; { AltList def value for lParam }
{$EXTERNALSYM HEAL_DEFAULT}
{ box edit Info: }
BEI_FACESIZE = 32; { max size of font name, = LF_FACESIZE }
{$EXTERNALSYM BEI_FACESIZE}
BEIF_BOXCROSS = $0001;
{$EXTERNALSYM BEIF_BOXCROSS}
{ box edit size: }
BESC_DEFAULT = 0;
{$EXTERNALSYM BESC_DEFAULT}
BESC_ROMANFIXED = 1;
{$EXTERNALSYM BESC_ROMANFIXED}
BESC_KANJIFIXED = 2;
{$EXTERNALSYM BESC_KANJIFIXED}
BESC_USERDEFINED = 3;
{$EXTERNALSYM BESC_USERDEFINED}
{ CTLINITBEDIT.wFlags values }
CIB_NOGDMSG = $0001; { disable garbage detection message box for this bedit }
{$EXTERNALSYM CIB_NOGDMSG}
CIB_NOACTIONHANDLE = $0002; { disable action handles for this bedit }
{$EXTERNALSYM CIB_NOACTIONHANDLE}
CIB_NOFLASHCURSOR = $0004; { don't flash cursor on tap-n-hold in this bedit }
{$EXTERNALSYM CIB_NOFLASHCURSOR}
CIB_NOWRITING = $0010; { disallow pen input into control }
{$EXTERNALSYM CIB_NOWRITING}
BXD_CELLWIDTH = 12;
{$EXTERNALSYM BXD_CELLWIDTH}
BXD_CELLHEIGHT = 16;
{$EXTERNALSYM BXD_CELLHEIGHT}
BXD_BASEHEIGHT = 13;
{$EXTERNALSYM BXD_BASEHEIGHT}
BXD_BASEHORZ = 0;
{$EXTERNALSYM BXD_BASEHORZ}
BXD_MIDFROMBASE = 0;
{$EXTERNALSYM BXD_MIDFROMBASE}
BXD_CUSPHEIGHT = 2;
{$EXTERNALSYM BXD_CUSPHEIGHT}
BXD_ENDCUSPHEIGHT = 4;
{$EXTERNALSYM BXD_ENDCUSPHEIGHT}
BXDK_CELLWIDTH = 32;
{$EXTERNALSYM BXDK_CELLWIDTH}
BXDK_CELLHEIGHT = 32;
{$EXTERNALSYM BXDK_CELLHEIGHT}
BXDK_BASEHEIGHT = 28;
{$EXTERNALSYM BXDK_BASEHEIGHT}
BXDK_BASEHORZ = 0;
{$EXTERNALSYM BXDK_BASEHORZ}
BXDK_MIDFROMBASE = 0;
{$EXTERNALSYM BXDK_MIDFROMBASE}
BXDK_CUSPHEIGHT = 28;
{$EXTERNALSYM BXDK_CUSPHEIGHT}
BXDK_ENDCUSPHEIGHT = 10;
{$EXTERNALSYM BXDK_ENDCUSPHEIGHT}
{ IME colors for bedit }
COLOR_BE_INPUT = 0;
{$EXTERNALSYM COLOR_BE_INPUT}
COLOR_BE_INPUT_TEXT = 1;
{$EXTERNALSYM COLOR_BE_INPUT_TEXT}
COLOR_BE_CONVERT = 2;
{$EXTERNALSYM COLOR_BE_CONVERT}
COLOR_BE_CONVERT_TEXT = 3;
{$EXTERNALSYM COLOR_BE_CONVERT_TEXT}
COLOR_BE_CONVERTED = 4;
{$EXTERNALSYM COLOR_BE_CONVERTED}
COLOR_BE_CONVERTED_TEXT = 5;
{$EXTERNALSYM COLOR_BE_CONVERTED_TEXT}
COLOR_BE_UNCONVERT = 6;
{$EXTERNALSYM COLOR_BE_UNCONVERT}
COLOR_BE_UNCONVERT_TEXT = 7;
{$EXTERNALSYM COLOR_BE_UNCONVERT_TEXT}
COLOR_BE_CURSOR = 8;
{$EXTERNALSYM COLOR_BE_CURSOR}
COLOR_BE_CURSOR_TEXT = 9;
{$EXTERNALSYM COLOR_BE_CURSOR_TEXT}
COLOR_BE_PRECONVERT = 10;
{$EXTERNALSYM COLOR_BE_PRECONVERT}
COLOR_BE_PRECONVERT_TEXT = 11;
{$EXTERNALSYM COLOR_BE_PRECONVERT_TEXT}
MAXIMECOLORS = 12;
{$EXTERNALSYM MAXIMECOLORS}
WM_PENMISC = WM_PENWINFIRST+6; { $386 }
{$EXTERNALSYM WM_PENMISC}
{ WM_PENMISC message constants: }
PMSC_BEDITCHANGE = 1; { broadcast when BEDIT changes }
{$EXTERNALSYM PMSC_BEDITCHANGE}
PMSC_PENUICHANGE = 2; { JPN broadcast when PENUI changes }
{$EXTERNALSYM PMSC_PENUICHANGE}
PMSC_SUBINPCHANGE = 3; { JPN broadcast when SUBINPUT changes }
{$EXTERNALSYM PMSC_SUBINPCHANGE}
PMSC_KKCTLENABLE = 4; { JPN }
{$EXTERNALSYM PMSC_KKCTLENABLE}
PMSC_GETPCMINFO = 5; { query the window's PCMINFO }
{$EXTERNALSYM PMSC_GETPCMINFO}
PMSC_SETPCMINFO = 6; { set the window's PCMINFO }
{$EXTERNALSYM PMSC_SETPCMINFO}
PMSC_GETINKINGINFO = 7; { query the window's INKINGINFO }
{$EXTERNALSYM PMSC_GETINKINGINFO}
PMSC_SETINKINGINFO = 8; { set the window's INKINGINFO }
{$EXTERNALSYM PMSC_SETINKINGINFO}
PMSC_GETHRC = 9; { query the window's HRC }
{$EXTERNALSYM PMSC_GETHRC}
PMSC_SETHRC = 10; { set the window's HRC }
{$EXTERNALSYM PMSC_SETHRC}
PMSC_GETSYMBOLCOUNT = 11; { count of symbols in result recd by window }
{$EXTERNALSYM PMSC_GETSYMBOLCOUNT}
PMSC_GETSYMBOLS = 12; { ditto symbols }
{$EXTERNALSYM PMSC_GETSYMBOLS}
PMSC_SETSYMBOLS = 13; { ditto set symbols }
{$EXTERNALSYM PMSC_SETSYMBOLS}
PMSC_LOADPW = 15; { broadcast load state on penwin }
{$EXTERNALSYM PMSC_LOADPW}
PMSC_INKSTOP = 16;
{$EXTERNALSYM PMSC_INKSTOP}
{ PMSCL_xx lParam values for PMSC_xx: }
PMSCL_UNLOADED = 0; { penwin just unloaded }
{$EXTERNALSYM PMSCL_UNLOADED}
PMSCL_LOADED = 1; { penwin just loaded }
{$EXTERNALSYM PMSCL_LOADED}
PMSCL_UNLOADING = 2; { penwin about to unload }
{$EXTERNALSYM PMSCL_UNLOADING}
WM_CTLINIT = WM_PENWINFIRST+7; { $387 }
{$EXTERNALSYM WM_CTLINIT}
{ WM_CTLINIT message constants: }
CTLINIT_HEDIT = 1;
{$EXTERNALSYM CTLINIT_HEDIT}
CTLINIT_BEDIT = 7;
{$EXTERNALSYM CTLINIT_BEDIT}
CTLINIT_IEDIT = 9;
{$EXTERNALSYM CTLINIT_IEDIT}
CTLINIT_MAX = 10;
{$EXTERNALSYM CTLINIT_MAX}
WM_PENEVENT = WM_PENWINFIRST+8; { $388 }
{$EXTERNALSYM WM_PENEVENT}
{ WM_PENEVENT message values for wParam: }
PE_PENDOWN = 1; { pen tip down }
{$EXTERNALSYM PE_PENDOWN}
PE_PENUP = 2; { pen tip went from down to up }
{$EXTERNALSYM PE_PENUP}
PE_PENMOVE = 3; { pen moved without a tip transition }
{$EXTERNALSYM PE_PENMOVE}
PE_TERMINATING = 4; { Peninput about to terminate }
{$EXTERNALSYM PE_TERMINATING}
PE_TERMINATED = 5; { Peninput terminated }
{$EXTERNALSYM PE_TERMINATED}
PE_BUFFERWARNING = 6; { Buffer half full. }
{$EXTERNALSYM PE_BUFFERWARNING}
PE_BEGININPUT = 7; { begin default input }
{$EXTERNALSYM PE_BEGININPUT}
PE_SETTARGETS = 8; { set target data structure (TARGINFO) }
{$EXTERNALSYM PE_SETTARGETS}
PE_BEGINDATA = 9; { init message to all targets }
{$EXTERNALSYM PE_BEGINDATA}
PE_MOREDATA = 10; { target gets more data }
{$EXTERNALSYM PE_MOREDATA}
PE_ENDDATA = 11; { termination message to all targets }
{$EXTERNALSYM PE_ENDDATA}
PE_GETPCMINFO = 12; { get input collection info }
{$EXTERNALSYM PE_GETPCMINFO}
PE_GETINKINGINFO = 13; { get inking info }
{$EXTERNALSYM PE_GETINKINGINFO}
PE_ENDINPUT = 14; { Input termination message to window }
{$EXTERNALSYM PE_ENDINPUT}
{ starting default input }
PE_RESULT = 15; { sent after ProcessHRC but before GetResultsHRC }
{$EXTERNALSYM PE_RESULT}
type
HTRG = Integer;
{$EXTERNALSYM HTRG}
HPCM = Integer;
{$EXTERNALSYM HPCM}
HPENDATA = Integer;
{$EXTERNALSYM HPENDATA}
HREC = Integer;
{$EXTERNALSYM HREC}
{ Types }
{ Simple: }
type
ALC = Longint; { Enabled Alphabet }
{$EXTERNALSYM ALC}
CL = Integer; { Confidence Level }
{$EXTERNALSYM CL}
HKP = UINT; { Hook Parameter }
{$EXTERNALSYM HKP}
REC = Integer; { recognition result }
{$EXTERNALSYM REC}
SYV = Longint; { Symbol Value }
{$EXTERNALSYM SYV}
{ Pointer Types: }
type
PALC = ^ALC; { ptr to ALC }
LPALC = PALC;
{$EXTERNALSYM LPALC}
POEM = Pointer; { alias }
LPOEM = POEM;
{$EXTERNALSYM LPOEM}
PSYV = ^SYV; { ptr to SYV }
LPSYV = PSYV;
{$EXTERNALSYM LPSYV}
PHPENDATA = ^HPENDATA; { ptr to HPENDATA }
LPHPENDATA = PHPENDATA;
{$EXTERNALSYM LPHPENDATA}
{ Function Prototypes: }
ENUMPROC = function(p1: PSYV; p2: Integer; p3: Integer): Integer stdcall;
TFNEnumProc = ENUMPROC;
{$EXTERNALSYM ENUMPROC}
PFNLPDF = ^TFNLPDF;
LPDF = function(p1: Integer; p2, p3: Pointer; p4: Integer;
p5, p6: DWORD): Integer stdcall;
TFNLPDF = LPDF;
{$EXTERNALSYM LPDF}
RCYIELDPROC = function: BOOL stdcall;
TFNRCYieldProc = RCYIELDPROC;
{$EXTERNALSYM RCYIELDPROC}
{ Structures: }
PAbsTime = ^TAbsTime;
tagABSTIME = packed record { 2.0 absolute date/time }
sec: DWORD; { number of seconds since 1/1/1970, ret by CRTlib time() fn }
ms: UINT; { additional offset in ms, 0..999 }
end;
{$EXTERNALSYM tagABSTIME}
TAbsTime = tagABSTIME;
ABSTIME = tagABSTIME;
{$EXTERNALSYM ABSTIME}
LPABSTIME = PAbsTime;
{$EXTERNALSYM LPABSTIME}
PCtlInitHEdit = ^TCtlInitHEdit;
tagCTLINITHEDIT = packed record { 2.0 init struct for (h)edit }
cbSize: DWORD; { sizeof(CTLINITHEDIT) }
hwnd: HWND; { (h)edit window handle }
id: Integer; { its id }
dwFlags: DWORD; { CIE_xx }
dwReserved: DWORD; { for future use }
end;
{$EXTERNALSYM tagCTLINITHEDIT}
TCtlInitHEdit = tagCTLINITHEDIT;
CTLINITHEDIT = tagCTLINITHEDIT;
{$EXTERNALSYM CTLINITHEDIT}
LPCTLINITHEDIT = PCtlInitHEdit;
{$EXTERNALSYM LPCTLINITHEDIT}
PBoxLayout = ^TBoxLayout;
tagBOXLAYOUT = packed record { 1.0 box edit layout }
cyCusp: Integer; { pixel height of box (BXS_RECT) or cusp }
cyEndCusp: Integer; { pixel height of cusps at extreme ends }
style: UINT; { BXS_xx style }
dwReserved1: DWORD; { reserved }
dwReserved2: DWORD; { reserved }
dwReserved3: DWORD; { reserved }
end;
{$EXTERNALSYM tagBOXLAYOUT}
TBoxLayout = tagBOXLAYOUT;
BOXLAYOUT = TBoxLayout;
{$EXTERNALSYM BOXLAYOUT}
LPBOXLAYOUT = PBoxLayout;
{$EXTERNALSYM LPBOXLAYOUT}
PIMEColors = ^TIMEColors;
tagIMECOLORS = packed record { 2.0 IME undetermined string color info. }
cColors: Integer; { count of colors to be set/get }
lpnElem: PINT; { address of array of elements }
lprgbIme: ^COLORREF; { address of array of RGB values }
end;
{$EXTERNALSYM tagIMECOLORS}
TIMEColors = tagIMECOLORS;
IMECOLORS = tagIMECOLORS;
{$EXTERNALSYM IMECOLORS}
LPIMECOLORS = PIMEColors;
{$EXTERNALSYM LPIMECOLORS}
PCtlInitBEdit = ^TCtlInitBEdit;
tagCTLINITBEDIT = packed record { 2.0 init struct for box edit }
cbSize: DWORD; { sizeof(CTLINITBEDIT) }
hwnd: HWND; { box edit window handle }
id: Integer; { its id }
wSizeCategory: WORD; { BESC_xx }
wFlags: WORD; { CIB_xx }
dwReserved: DWORD; { for future use }
end;
{$EXTERNALSYM tagCTLINITBEDIT}
TCtlInitBEdit = tagCTLINITBEDIT;
CTLINITBEDIT = tagCTLINITBEDIT;
{$EXTERNALSYM CTLINITBEDIT}
LPCTLINITBEDIT = PCtlInitBEdit;
{$EXTERNALSYM LPCTLINITBEDIT}
PBoxEditInfo = ^TBoxEditInfo;
tagBOXEDITINFO = packed record { 1.1 box edit Size Info }
cxBox: Integer; { width of a single box }
cyBox: Integer; { ditto height }
cxBase: Integer; { in-box x-margin to guideline }
cyBase: Integer; { in-box y offset from top to baseline }
cyMid: Integer; { 0 or distance from baseline to midline }
boxlayout: TBoxLayout; { embedded BOXLAYOUT structure }
wFlags: UINT; { BEIF_xx }
szFaceName: packed array[0..BEI_FACESIZE-1] of BYTE;{ font face name }
wFontHeight: UINT; { font height }
rgwReserved: packed array[0..7] of UINT;{ for future use }
end;
{$EXTERNALSYM tagBOXEDITINFO}
TBoxEditInfo = tagBOXEDITINFO;
BOXEDITINFO = tagBOXEDITINFO;
{$EXTERNALSYM BOXEDITINFO}
LPBOXEDITINFO = PBoxEditInfo;
{$EXTERNALSYM LPBOXEDITINFO}
PRectOfs = ^TRectOfs;
tagRECTOFS = packed record { 1.0 rectangle offset for nonisometric inflation }
dLeft: Integer; { inflation leftwards from left side }
dTop: Integer; { ditto upwards from top }
dRight: Integer; { ditto rightwards from right }
dBottom: Integer; { ditto downwards from bottom }
end;
{$EXTERNALSYM tagRECTOFS}
TRectOfs = tagRECTOFS;
RECTOFS = tagRECTOFS;
{$EXTERNALSYM RECTOFS}
LPRECTOFS = PRectOfs;
{$EXTERNALSYM LPRECTOFS}
PPenDataHeader = ^TPenDataHeader;
tagPENDATAHEADER = packed record { 1.0 main pen data header }
wVersion: UINT; { pen data format version }
cbSizeUsed: UINT; { size of pendata mem block in bytes }
cStrokes: UINT; { number of strokes (incl up-strokes) }
cPnt: UINT; { count of all points }
cPntStrokeMax: UINT; { length (in points) of longest stroke }
rectBound: TRect; { bounding rect of all down points }
wPndts: UINT; { PDTS_xx bits }
nInkWidth: Integer; { ink width in pixels }
rgbInk: DWORD; { ink color }
end;
{$EXTERNALSYM tagPENDATAHEADER}
TPenDataHeader = tagPENDATAHEADER;
PENDATAHEADER = tagPENDATAHEADER;
{$EXTERNALSYM PENDATAHEADER}
LPPENDATAHEADER = PPenDataHeader;
{$EXTERNALSYM LPPENDATAHEADER}
PStrokeInfo = ^TStrokeInfo;
tagSTROKEINFO = packed record { 1.0 stroke header }
cPnt: UINT; { count of points in stroke }
cbPnts: UINT; { size of stroke in bytes }
wPdk: UINT; { state of stroke }
dwTick: DWORD; { time at beginning of stroke }
end;
{$EXTERNALSYM tagSTROKEINFO}
TStrokeInfo = tagSTROKEINFO;
STROKEINFO = tagSTROKEINFO;
{$EXTERNALSYM STROKEINFO}
LPSTROKEINFO = PStrokeInfo;
{$EXTERNALSYM LPSTROKEINFO}
PPenTip = ^TPenTip;
tagPENTIP = packed record { 2.0 Pen Tip characteristics }
cbSize: DWORD; { sizeof(PENTIP) }
btype: BYTE; { pen type/nib (calligraphic nib, etc.) }
bwidth: BYTE; { width of Nib (typically = nInkWidth) }
bheight: BYTE; { height of Nib }
bOpacity: BYTE; { 0=transparent, $80=hilite, $FF=opaque }
rgb: COLORREF; { pen color }
dwFlags: DWORD; { TIP_xx flags }
dwReserved: DWORD; { for future expansion }
end;
{$EXTERNALSYM tagPENTIP}
TPenTip = tagPENTIP;
PENTIP = tagPENTIP;
{$EXTERNALSYM PENTIP}
LPPENTIP = PPenTip;
{$EXTERNALSYM LPPENTIP}
ANIMATEPROC = function(p1: HPENDATA; p2, p3: UINT; p4: PUINT;
p5: LPARAM): BOOL stdcall;
{$EXTERNALSYM ANIMATEPROC}
TFNAnimateProc = ANIMATEPROC;
PAnimateInfo = ^TAnimateInfo;
tagANIMATEINFO = packed record { 2.0 Animation parameters }
cbSize: DWORD; { sizeof(ANIMATEINFO) }
uSpeedPct: UINT; { speed percent to animate at }
uPeriodCB: UINT; { time between calls to callback in ms }
fuFlags: UINT; { animation flags }
lParam: LPARAM; { value to pass to callback }
dwReserved: DWORD; { reserved }
end;
{$EXTERNALSYM tagANIMATEINFO}
TAnimateInfo = tagANIMATEINFO;
ANIMATEINFO = tagANIMATEINFO;
{$EXTERNALSYM ANIMATEINFO}
LPANIMATEINFO = PAnimateInfo;
{$EXTERNALSYM LPANIMATEINFO}
POEMPenInfo = ^TOEMPenInfo;
tagOEMPENINFO = packed record { 1.0 OEM pen/tablet hdwe info }
wPdt: UINT; { pen data type }
wValueMax: UINT; { largest val ret by device }
wDistinct: UINT; { number of distinct readings possible }
end;
{$EXTERNALSYM tagOEMPENINFO}
TOEMPenInfo = tagOEMPENINFO;
OEMPENINFO = tagOEMPENINFO;
{$EXTERNALSYM OEMPENINFO}
LPOEMPENINFO = POEMPenInfo;
{$EXTERNALSYM LPOEMPENINFO}
PPenPacket = ^TPenPacket;
tagPENPACKET = packed record
wTabletX: UINT; { x in raw coords }
wTabletY: UINT; { ditto y }
wPDK: UINT; { state bits }
rgwOemData: packed array[0..MAXOEMDATAWORDS-1] of UINT;{ OEM-specific data }
end;
{$EXTERNALSYM tagPENPACKET}
TPenPacket = tagPENPACKET;
PENPACKET = tagPENPACKET;
{$EXTERNALSYM PENPACKET}
LPPENPACKET = PPenPacket;
{$EXTERNALSYM LPPENPACKET}
POEMPenPacket = ^TOEMPenPacket;
tagOEMPENPACKET = packed record
wTabletX: UINT; { x in raw coords }
wTabletY: UINT; { ditto y }
wPDK: UINT; { state bits }
rgwOemData: packed array[0..MAXOEMDATAWORDS-1] of UINT;{ OEM-specific data }
dwTime: DWORD;
end;
{$EXTERNALSYM tagOEMPENPACKET}
TOEMPenPacket = tagOEMPENPACKET;
OEMPENPACKET = tagOEMPENPACKET;
{$EXTERNALSYM OEMPENPACKET}
LPOEMPENPACKET = POEMPenPacket;
{$EXTERNALSYM LPOEMPENPACKET}
PPenInfo = ^TPenInfo;
tagPENINFO = packed record { 1.0 pen/tablet hdwe info }
cxRawWidth: UINT; { max x coord and tablet width in 0.001" }
cyRawHeight: UINT; { ditto y, height }
wDistinctWidth: UINT; { number of distinct x values tablet ret }
wDistinctHeight: UINT; { ditto y }
nSamplingRate: Integer; { samples / second }
nSamplingDist: Integer; { min distance to move before generating event }
lPdc: Longint; { Pen Device Capabilities }
cPens: Integer; { number of pens supported }
cbOemData: Integer; { width of OEM data packet }
rgoempeninfo: packed array[0..MAXOEMDATAWORDS-1] of TOEMPenInfo;{ supported OEM data types }
rgwReserved: packed array[0..6] of UINT;{ for internal use }
fuOEM: UINT; { which OEM data, timing, PDK_xx to report }
end;
{$EXTERNALSYM tagPENINFO}
TPenInfo = tagPENINFO;
PENINFO = tagPENINFO;
{$EXTERNALSYM PENINFO}
LPPENINFO = PPenInfo;
{$EXTERNALSYM LPPENINFO}
PCalbStruct = ^TCalbStruct;
tagCALBSTRUCT = packed record { 1.0 pen calibration }
wOffsetX: Integer;
wOffsetY: Integer;
wDistinctWidth: Integer;
wDistinctHeight: Integer;
end;
{$EXTERNALSYM tagCALBSTRUCT}
TCalbStruct = tagCALBSTRUCT;
CALBSTRUCT = tagCALBSTRUCT;
{$EXTERNALSYM CALBSTRUCT}
LPCALBSTRUCT = PCalbStruct;
{$EXTERNALSYM LPCALBSTRUCT}
LPFNRAWHOOK = function(PenPacket: PPenPacket): BOOL stdcall;
{$EXTERNALSYM LPFNRAWHOOK}
TFNRawHook = LPFNRAWHOOK;
{ Handwriting Recognizer: }
type
HRC = Integer;
{$EXTERNALSYM HRC}
HRCRESULT = Integer;
{$EXTERNALSYM HRCRESULT}
HWL = Integer;
{$EXTERNALSYM HWL}
HRECHOOK = Integer;
{$EXTERNALSYM HRECHOOK}
HINKSET = Integer;
{$EXTERNALSYM HINKSET}
PHRC = ^HRC;
LPHRC = PHRC;
{$EXTERNALSYM LPHRC}
PHRCRESULT = ^HRCRESULT;
LPHRCRESULT = PHRCRESULT;
{$EXTERNALSYM LPHRCRESULT}
PHWL = ^HWL;
LPHWL = PHWL;
{$EXTERNALSYM LPHWL}
HRCRESULTHOOKPROC = function(p1: HREC; p2: HRC; p3, p4, p5: UINT;
p6: Pointer): BOOL stdcall;
{$EXTERNALSYM HRCRESULTHOOKPROC}
TFNHRCResultHookProc = HRCRESULTHOOKPROC;
{ Inksets: }
LPHINKSET = ^HINKSET; { ptr to HINKSET }
{$EXTERNALSYM LPHINKSET}
PInterval = ^TInterval;
tagINTERVAL = packed record { 2.0 interval structure for inksets }
atBegin: TAbsTime; { begining of 1-ms granularity interval }
atEnd: TAbsTime; { 1 ms past end of interval }
end;
{$EXTERNALSYM tagINTERVAL}
TInterval = tagINTERVAL;
INTERVAL = tagINTERVAL;
{$EXTERNALSYM INTERVAL}
LPINTERVAL = PInterval;
{$EXTERNALSYM LPINTERVAL}
PBoxResults = ^TBoxResults;
tagBOXRESULTS = packed record { 2.0 }
indxBox: UINT;
hinksetBox: HINKSET;
rgSyv: packed array[0..0] of SYV;
end;
{$EXTERNALSYM tagBOXRESULTS}
TBoxResults = tagBOXRESULTS;
BOXRESULTS = tagBOXRESULTS;
{$EXTERNALSYM BOXRESULTS}
LPBOXRESULTS = PBoxResults;
{$EXTERNALSYM LPBOXRESULTS}
PGuide = ^TGuide;
tagGUIDE = packed record { 1.0 guide structure }
xOrigin: Integer; { left edge of first box (screen coord)) }
yOrigin: Integer; { ditto top edge }
cxBox: Integer; { width of a single box }
cyBox: Integer; { ditto height }
cxBase: Integer; { in-box x-margin to guideline }
cyBase: Integer; { in-box y offset from top to baseline }
cHorzBox: Integer; { count of boxed columns }
cVertBox: Integer; { ditto rows }
cyMid: Integer; { 0 or distance from baseline to midline }
end;
{$EXTERNALSYM tagGUIDE}
TGuide = tagGUIDE;
GUIDE = tagGUIDE;
{$EXTERNALSYM GUIDE}
LPGUIDE = PGuide;
{$EXTERNALSYM LPGUIDE}
PCtlInitIEdit = ^TCtlInitIEdit;
tagCTLINITIEDIT = packed record { 2.0 init struct for Ink Edit }
cbSize: DWORD; { sizeof(CTLINITIEDIT) }
hwnd: HWND; { IEdit window handle }
id: Integer; { its ID }
ieb: WORD; { IEB_* (background) bits }
iedo: WORD; { IEDO_* (draw options) bits }
iei: WORD; { IEI_* (ink input) bits }
ien: WORD; { IEN_* (notification) bits }
ierec: WORD; { IEREC_* (recognition) bits }
ies: WORD; { IES_* (style) bits }
iesec: WORD; { IESEC_* (security) bits }
pdts: WORD; { initial pendata scale factor (PDTS_*) }
hpndt: HPENDATA; { initial pendata (or NULL if none) }
hgdiobj: HGDIOBJ; { background brush or bitmap handle }
hpenGrid: HPEN; { pen to use in drawing grid }
ptOrgGrid: TPoint; { grid lines point of origin }
wVGrid: WORD; { vertical gridline spacing }
wHGrid: WORD; { horizontal gridline spacing }
dwApp: DWORD; { application-defined data }
dwReserved: DWORD; { reserved for future use }
end;
{$EXTERNALSYM tagCTLINITIEDIT}
TCtlInitIEdit = tagCTLINITIEDIT;
CTLINITIEDIT = tagCTLINITIEDIT;
{$EXTERNALSYM CTLINITIEDIT}
LPCTLINITIEDIT = PCtlInitIEdit;
{$EXTERNALSYM LPCTLINITIEDIT}
PPDEvent = ^TPDEvent;
tagPDEVENT = packed record { 2.0 }
cbSize: DWORD; { sizeof(PDEVENT) }
hwnd: HWND; { window handle of I-Edit }
wm: UINT; { WM_* (window message) of event }
wParam: WPARAM; { wParam of message }
lParam: LPARAM; { lParam of message }
pt: TPoint; { event pt in I-Edit client co-ords }
fPen: BOOL; { TRUE if pen (or other inking device) }
lExInfo: Longint; { GetMessageExtraInfo() return value }
dwReserved: DWORD; { for future use }
end;
{$EXTERNALSYM tagPDEVENT}
TPDEvent = tagPDEVENT;
PDEVENT = tagPDEVENT;
{$EXTERNALSYM PDEVENT}
LPPDEVENT = PPDEvent;
{$EXTERNALSYM LPPDEVENT}
PStrkFmt = ^TStrkFmt;
tagSTRKFMT = packed record { 2.0 }
cbSize: DWORD; { sizeof(STRKFMT) }
iesf: UINT; { stroke format flags and return bits }
iStrk: UINT; { stroke index if IESF_STROKE }
tip: TPenTip; { ink tip attributes }
dwUser: DWORD; { user data for strokes }
dwReserved: DWORD; { for future use }
end;
{$EXTERNALSYM tagSTRKFMT}
TStrkFmt = tagSTRKFMT;
STRKFMT = tagSTRKFMT;
{$EXTERNALSYM STRKFMT}
LPSTRKFMT = PStrkFmt;
{$EXTERNALSYM LPSTRKFMT}
PPCMInfo = ^TPCMInfo;
tagPCMINFO = packed record { 2.0 Pen Collection Mode Information }
cbSize: DWORD; { sizeof(PCMINFO) }
dwPcm: DWORD; { PCM_xxx flags }
rectBound: TRect; { if finish on pendown outside this rect }
rectExclude: TRect; { if finish on pendown inside this rect }
hrgnBound: HRGN; { if finish on pendown outside this region }
hrgnExclude: HRGN; { if finish on pendown inside this region }
dwTimeout: DWORD; { if finish after timeout, this many ms }
end;
{$EXTERNALSYM tagPCMINFO}
TPCMInfo = tagPCMINFO;
PCMINFO = tagPCMINFO;
{$EXTERNALSYM PCMINFO}
LPPCMINFO = PPCMInfo;
{$EXTERNALSYM LPPCMINFO}
PInkingInfo = ^TInkingInfo;
tagINKINGINFO = packed record { 2.0 Pen Inking Information }
cbSize: DWORD; { sizeof(INKINGINFO) }
wFlags: UINT; { One of the PII_xx flags }
tip: TPenTip; { Pen type, size and color }
rectClip: TRect; { Clipping rect for the ink }
rectInkStop: TRect; { Rect in which a pen down stops inking }
hrgnClip: HRGN; { Clipping region for the ink }
hrgnInkStop: HRGN; { Region in which a pen down stops inking }
end;
{$EXTERNALSYM tagINKINGINFO}
TInkingInfo = tagINKINGINFO;
INKINGINFO = tagINKINGINFO;
{$EXTERNALSYM INKINGINFO}
LPINKINGINFO = PInkingInfo;
{$EXTERNALSYM LPINKINGINFO}
PSYC = ^TSYC;
tagSYC = packed record { 1.0 Symbol Correspondence for Ink }
wStrokeFirst: UINT; { first stroke, inclusive }
wPntFirst: UINT; { first point in first stroke, inclusive }
wStrokeLast: UINT; { last stroke, inclusive }
wPntLast: UINT; { last point in last stroke, inclusive }
fLastSyc: BOOL; { T: no more SYCs follow for current SYE }
end;
{$EXTERNALSYM tagSYC}
TSYC = tagSYC;
SYC = tagSYC;
{$EXTERNALSYM SYC}
LPSYC = PSYC;
{$EXTERNALSYM LPSYC}
PSYE = ^TSYE;
tagSYE = packed record { 1.0 Symbol Element }
syv: SYV; { symbol value }
lRecogVal: Longint; { for internal use by recognizer }
cl: CL; { confidence level }
iSyc: Integer; { SYC index }
end;
{$EXTERNALSYM tagSYE}
TSYE = tagSYE;
SYE = tagSYE;
{$EXTERNALSYM SYE}
LPSYE = PSYE;
{$EXTERNALSYM LPSYE}
PSYG = ^TSYG;
tagSYG = packed record { 1.0 Symbol Graph }
rgpntHotSpots: packed array[0..MAXHOTSPOT-1] of TPoint;{ hot spots (max 8) }
cHotSpot: Integer; { number of valid hot spots in rgpntHotSpots }
nFirstBox: Integer; { row-major index to box of 1st char in result }
lRecogVal: Longint; { reserved for use by recoognizer }
lpsye: PSYE; { nodes of symbol graph }
cSye: Integer; { number of SYEs in symbol graph }
lpsyc: PSYC; { ptr to corresp symbol ink }
cSyc: Integer; { ditto count }
end;
{$EXTERNALSYM tagSYG}
TSYG = tagSYG;
SYG = tagSYG;
{$EXTERNALSYM SYG}
LPSYG = PSYG;
{$EXTERNALSYM LPSYG}
PRC = ^TRC;
tagRC = packed record { 1.0 Recognition Context (RC) }
hrec: HREC; { handle of recognizer to use }
hwnd: HWND; { window to send results to }
wEventRef: UINT; { index into ink buffer }
wRcPreferences: UINT; { flags: RCP_xx Preferences }
lRcOptions: Longint; { RCO_xx options }
lpfnYield: TFNRCYieldProc; { procedure called during Yield() }
lpUser: packed array[0..cbRcUserMax-1] of BYTE;{ current writer }
wCountry: UINT; { country code }
wIntlPreferences: UINT; { flags: RCIP_xx }
lpLanguage: packed array[0..cbRcLanguageMax-1] of Char;{ language strings }
rglpdf: packed array[0..MAXDICTIONARIES-1] of PFNLPDF;{ list of dictionary functions }
wTryDictionary: UINT; { max enumerations to search }
clErrorLevel: CL; { level where recognizer should reject input }
alc: ALC; { enabled alphabet }
alcPriority: ALC; { prioritizes the ALC_ codes }
rgbfAlc: packed array[0..cbRcrgbfAlcMax-1] of BYTE;{ bit field for enabled characters }
wResultMode: UINT; { RRM_xx when to send (asap or when complete) }
wTimeOut: UINT; { recognition timeout in ms }
lPcm: Longint; { flags: PCM_xx for ending recognition }
rectBound: TRect; { bounding rect for inking (def:screen coords) }
rectExclude: TRect; { pen down inside this terminates recognition }
guide: TGuide; { struct: defines guidelines for recognizer }
wRcOrient: UINT; { RCOR_xx orientation of writing wrt tablet }
wRcDirect: UINT; { RCD_xx direction of writing }
nInkWidth: Integer; { ink width 0 (none) or 1..15 pixels }
rgbInk: COLORREF; { ink color }
dwAppParam: DWORD; { for application use }
dwDictParam: DWORD; { for app use to be passed on to dictionaries }
dwRecognizer: DWORD; { for app use to be passed on to recognizer }
rgwReserved: packed array[0..cwRcReservedMax-1] of UINT;{ reserved for future use by Windows }
end;
{$EXTERNALSYM tagRC}
TRC = tagRC;
RC = tagRC;
{$EXTERNALSYM RC}
LPRC = PRC;
{$EXTERNALSYM LPRC}
PRCResult = ^TRCResult;
tagRCRESULT = packed record { 1.0 Recognition Result }
syg: TSYG; { symbol graph }
wResultsType: UINT; { see RCRT_xx }
cSyv: Integer; { count of symbol values }
lpsyv: PSYV; { NULL-term ptr to recog's best guess }
hSyv: THandle; { globally-shared handle to lpsyv mem }
nBaseLine: Integer; { 0 or baseline of input writing }
nMidLine: Integer; { ditto midline }
hpendata: HPENDATA; { pen data mem }
rectBoundInk: TRect; { ink data bounds }
pntEnd: TPoint; { pt that terminated recog }
lprc: PRC; { recog context used }
end;
{$EXTERNALSYM tagRCRESULT}
TRCResult = tagRCRESULT;
RCRESULT = tagRCRESULT;
{$EXTERNALSYM RCRESULT}
LPRCRESULT = PRCResult;
{$EXTERNALSYM LPRCRESULT}
LPFUNCRESULTS = function(p1: PRCResult; p2: REC): Integer stdcall;
{$EXTERNALSYM LPFUNCRESULTS}
TFNFuncResults = LPFUNCRESULTS;
PTarget = ^TTarget;
tagTARGET = packed record { 2.0 Geometry for a single target. }
dwFlags: DWORD; { individual target flags }
idTarget: DWORD; { TARGINFO.rgTarget[] index }
htrgTarget: HTRG; { HANDLE32 equiv }
rectBound: TRect; { Bounding rect of the target }
dwData: DWORD; { data collection info per target }
rectBoundInk: TRect; { Reserved for internal use, must be zero }
rectBoundLastInk: TRect; { Reserved for internal use, must be zero }
end;
{$EXTERNALSYM tagTARGET}
TTarget = tagTARGET;
TARGET = tagTARGET;
{$EXTERNALSYM TARGET}
LPTARGET = PTarget;
{$EXTERNALSYM LPTARGET}
PTargInfo = ^TTargInfo;
tagTARGINFO = packed record { 2.0 A set of targets }
cbSize: DWORD; { sizeof(TARGINFO) }
dwFlags: DWORD; { flags }
htrgOwner: HTRG; { HANDLE32 equiv }
cTargets: WORD; { count of targets }
iTargetLast: WORD; { last target, used by TargetPoints API }
{ if TPT_TEXTUAL flag is set }
rgTarget: packed array[0..0] of TTarget;{ variable-length array of targets }
end;
{$EXTERNALSYM tagTARGINFO}
TTargInfo = tagTARGINFO;
TARGINFO = tagTARGINFO;
{$EXTERNALSYM TARGINFO}
LPTARGINFO = PTargInfo;
{$EXTERNALSYM LPTARGINFO}
PInpParams = ^TInpParams;
tagINPPARAMS = packed record { 2.0 }
cbSize: DWORD; { sizeof(INPPARAMS) }
dwFlags: DWORD;
hpndt: HPENDATA;
target: TTarget; { target structure }
end;
{$EXTERNALSYM tagINPPARAMS}
TInpParams = tagINPPARAMS;
INPPARAMS = tagINPPARAMS;
{$EXTERNALSYM INPPARAMS}
LPINPPARAMS = PInpParams;
{$EXTERNALSYM LPINPPARAMS}
PSKBInfo = ^TSKBInfo;
tagSKBINFO = packed record
handle: HWnd;
nPad: Word;
fVisible: Bool;
fMinimized: Bool;
hect: TRect;
dwReserved: Longint;
end;
{$EXTERNALSYM tagSKBINFO}
TSKBInfo = tagSKBINFO;
SKBINFO = tagSKBINFO;
{$EXTERNALSYM SKBINFO}
LPSKBINFO = PSKBInfo;
{$EXTERNALSYM LPSKBINFO}
{ Utility Functions }
{ Misc }
function FPenUpX(X: Integer): BOOL;
{$EXTERNALSYM FPenUpX}
function GetWEventRef: Word;
{$EXTERNALSYM GetWEventRef}
{ ALC: }
function MpAlcB(lprc: PRC; i: Word): PByte;
{$EXTERNALSYM MpAlcB}
function MpIbf(i: Word): Byte;
{$EXTERNALSYM MpIbf}
procedure SetAlcBitAnsi(lprc: PRC; i: Word);
{$EXTERNALSYM SetAlcBitAnsi}
procedure ResetAlcBitAnsi(lprc: PRC; i: Word);
{$EXTERNALSYM ResetAlcBitAnsi}
function IsAlcBitAnsi(lprc: PRC; i: Word): Boolean;
{$EXTERNALSYM IsAlcBitAnsi}
{ draw 2.0 pendata using internal stroke formats: }
function DrawPenDataFmt(hdc: HDC; lprect: PRect; hpndt: THandle): Integer;
{$EXTERNALSYM DrawPenDataFmt}
{ Handwriting Recognizer: }
{ Intervals: }
{ difference of two absolute times (at2 > at1 for positive result): }
function dwDiffAT(at1, at2: TAbsTime): Integer;
{$EXTERNALSYM dwDiffAT}
{ comparison of two absolute times (TRUE if at1 < at2): }
function FLTAbsTime(at1, at2: TAbsTime): Boolean;
{$EXTERNALSYM FLTAbsTime}
function FLTEAbsTime(at1, at2: TAbsTime): Boolean;
{$EXTERNALSYM FLTEAbsTime}
function FEQAbsTime(at1, at2: TAbsTime): Boolean;
{$EXTERNALSYM FEQAbsTime}
{ test if abstime is within an interval: }
function FAbsTimeInInterval(at: TAbsTime; lpi: PInterval): Boolean;
{$EXTERNALSYM FAbsTimeInInterval}
{ test if interval (lpiT) is within an another interval (lpiS): }
function FIntervalInInterval(lpiT, lpiS: PInterval): Boolean;
{$EXTERNALSYM FIntervalInInterval}
{ test if interval (lpiT) intersects another interval (lpiS): }
function FIntervalXInterval(lpiT, lpiS: PInterval): Boolean;
{$EXTERNALSYM FIntervalXInterval}
{ duration of an PInterval in ms: }
function dwDurInterval(lpi: PInterval): Integer;
{$EXTERNALSYM dwDurInterval}
{ fill a pointer to an ABSTIME structure from a count of seconds and ms: }
procedure MakeAbsTime(var lpat: TAbsTime; sec, ms: Integer);
{$EXTERNALSYM MakeAbsTime}
{ SYV functions: }
function FIsSpecial(syv: DWORD): Boolean;
{$EXTERNALSYM FIsSpecial}
function FIsAnsi(syv: DWORD): Boolean;
{$EXTERNALSYM FIsAnsi}
function FIsGesture(syv: DWORD): Boolean;
{$EXTERNALSYM FIsGesture}
function FIsKanji(syv: DWORD): Boolean;
{$EXTERNALSYM FIsKanji}
function FIsShape(syv: DWORD): Boolean;
{$EXTERNALSYM FIsShape}
function FIsUniCode(syv: DWORD): Boolean;
{$EXTERNALSYM FIsUniCode}
function FIsVKey(syv: DWORD): Boolean;
{$EXTERNALSYM FIsVKey}
function ChSyvToAnsi(syv: DWORD): Byte;
{$EXTERNALSYM ChSyvToAnsi}
function WSyvToKanji(syv: DWORD): Word;
{$EXTERNALSYM WSyvToKanji}
function SyvCharacterToSymbol(c: Char): DWORD;
{$EXTERNALSYM SyvCharacterToSymbol}
function SyvKanjiToSymbol(c: Char): DWORD;
{$EXTERNALSYM SyvKanjiToSymbol}
function FIsSelectGesture(syv: DWORD): Boolean;
{$EXTERNALSYM FIsSelectGesture}
function FIsStdGesture(syv: DWORD): Boolean;
{$EXTERNALSYM FIsStdGesture}
function FIsAnsiGesture(syv: DWORD): Boolean;
{$EXTERNALSYM FIsAnsiGesture}
function SubPenMsgFromWpLp(wp, lp: DWORD): Word;
{$EXTERNALSYM SubPenMsgFromWpLp}
function EventRefFromWpLp(wp, lp: DWORD): Word;
{$EXTERNALSYM EventRefFromWpLp}
function TerminationFromWpLp(wp, lp: DWORD): Integer;
{$EXTERNALSYM TerminationFromWpLp}
function HwndFromHtrg(trg: HTRG): HWND;
{$EXTERNALSYM HwndFromHtrg}
function HpcmFromWpLp(wp, lp: DWORD): Integer;
{$EXTERNALSYM HpcmFromWpLp}
function HtrgFromHwnd(hwnd: HWND): HTRG;
{$EXTERNALSYM HtrgFromHwnd}
{ APIs and Prototypes }
{ PenData: }
function AddPointsPenData(p1: HPENDATA; p2: PPoint; p3: Pointer;
p4: PStrokeInfo): HPENDATA; stdcall;
{$EXTERNALSYM AddPointsPenData}
function CompressPenData(p1: HPENDATA; p2: UINT; p3: DWORD): Integer; stdcall;
{$EXTERNALSYM CompressPenData}
function CreatePenDataEx(p1: PPenInfo; p2: UINT; p3: UINT;
p4: UINT): HPENDATA; stdcall;
{$EXTERNALSYM CreatePenDataEx}
function CreatePenDataRegion(p1: HPENDATA; p2: UINT): HRGN; stdcall;
{$EXTERNALSYM CreatePenDataRegion}
function DestroyPenData(p1: HPENDATA): BOOL; stdcall;
{$EXTERNALSYM DestroyPenData}
function DrawPenDataEx(p1: HDC; p2: PRect; p3: HPENDATA; p4: UINT; p5: UINT;
p6: UINT; p7: UINT; p8: TFNAnimateProc; p9: PAnimateInfo;
p10: UINT): Integer; stdcall;
{$EXTERNALSYM DrawPenDataEx}
function DuplicatePenData(p1: HPENDATA; p2: UINT): HPENDATA; stdcall;
{$EXTERNALSYM DuplicatePenData}
function ExtractPenDataPoints(p1: HPENDATA; p2: UINT; p3: UINT; p4: UINT;
p5: PPoint; p6: Pointer; p7: UINT): Integer; stdcall;
{$EXTERNALSYM ExtractPenDataPoints}
function ExtractPenDataStrokes(p1: HPENDATA; p2: UINT; p3: LPARAM;
p4: PHPENDATA; p5: UINT): Integer; stdcall;
{$EXTERNALSYM ExtractPenDataStrokes}
function GetPenDataAttributes(p1: HPENDATA; p2: Pointer; p3: UINT): Integer; stdcall;
{$EXTERNALSYM GetPenDataAttributes}
function GetPenDataInfo(p1: HPENDATA; p2: PPENDATAHEADER; p3: PPenInfo;
p4: DWORD): BOOL; stdcall;
{$EXTERNALSYM GetPenDataInfo}
function GetPointsFromPenData(p1: HPENDATA; p2: UINT; p3: UINT; p4: UINT;
p5: PPoint): BOOL; stdcall;
{$EXTERNALSYM GetPointsFromPenData}
function GetStrokeAttributes(p1: HPENDATA; p2: UINT; p3: Pointer;
p4: UINT): Integer; stdcall;
{$EXTERNALSYM GetStrokeAttributes}
function GetStrokeTableAttributes(p1: HPENDATA; p2: UINT; p3: Pointer;
p4: UINT): Integer; stdcall;
{$EXTERNALSYM GetStrokeTableAttributes}
function HitTestPenData(p1: HPENDATA; p2: PPoint; p3: UINT; p4: PUINT;
p5: PUINT): Integer; stdcall;
{$EXTERNALSYM HitTestPenData}
function InsertPenData(p1: HPENDATA; p2: HPENDATA; p3: UINT): Integer; stdcall;
{$EXTERNALSYM InsertPenData}
function InsertPenDataPoints(p1: HPENDATA; p2: UINT; p3: UINT; p4: UINT;
p5: PPoint; p6: Pointer): Integer; stdcall;
{$EXTERNALSYM InsertPenDataPoints}
function InsertPenDataStroke(p1: HPENDATA; p2: UINT; p3: PPoint; p4: Pointer;
p5: PStrokeInfo): Integer; stdcall;
{$EXTERNALSYM InsertPenDataStroke}
function MetricScalePenData(p1: HPENDATA; p2: UINT): BOOL; stdcall;
{$EXTERNALSYM MetricScalePenData}
function OffsetPenData(p1: HPENDATA; p2: Integer; p3: Integer): BOOL; stdcall;
{$EXTERNALSYM OffsetPenData}
function PenDataFromBuffer(p1: PHPENDATA; p2: UINT; p3: PByte; p4: Longint;
p5: PDWORD): Longint; stdcall;
{$EXTERNALSYM PenDataFromBuffer}
function PenDataToBuffer(p1: HPENDATA; p2: PByte; p3: Longint;
p4: PDWORD): Longint; stdcall;
{$EXTERNALSYM PenDataToBuffer}
function RedisplayPenData(p1: HDC; p2: HPENDATA; p3: PPoint; p4: PPoint;
p5: Integer; p6: DWORD): BOOL; stdcall;
{$EXTERNALSYM RedisplayPenData}
function RemovePenDataStrokes(p1: HPENDATA; p2: UINT; p3: UINT): Integer; stdcall;
{$EXTERNALSYM RemovePenDataStrokes}
function ResizePenData(p1: HPENDATA; p2: PRect): BOOL; stdcall;
{$EXTERNALSYM ResizePenData}
function SetStrokeAttributes(p1: HPENDATA; p2: UINT; p3: LPARAM;
p4: UINT): Integer; stdcall;
{$EXTERNALSYM SetStrokeAttributes}
function SetStrokeTableAttributes(p1: HPENDATA; p2: UINT; p3: LPARAM;
p4: UINT): Integer; stdcall;
{$EXTERNALSYM SetStrokeTableAttributes}
function TrimPenData(p1: HPENDATA; p2: DWORD; p3: DWORD): Integer; stdcall;
{$EXTERNALSYM TrimPenData}
{ Pen Hardware/Driver: }
function GetPenAsyncState(p1: UINT): BOOL; stdcall;
{$EXTERNALSYM GetPenAsyncState}
function IsPenEvent(p1: UINT; p2: Longint): BOOL; stdcall;
{$EXTERNALSYM IsPenEvent}
{ Handwriting Recognizer: }
function AddPenDataHRC(p1: HRC; p2: HPENDATA): Integer; stdcall;
{$EXTERNALSYM AddPenDataHRC}
function AddPenInputHRC(p1: HRC; p2: PPoint; p3: Pointer; p4: UINT;
p5: PStrokeInfo): Integer; stdcall;
{$EXTERNALSYM AddPenInputHRC}
function AddWordsHWL(p1: HWL; p2: LPSTR; p3: UINT): Integer; stdcall;
{$EXTERNALSYM AddWordsHWL}
function ConfigHREC(p1: HREC; p2: UINT; p3: WPARAM; p4: LPARAM): Integer; stdcall;
{$EXTERNALSYM ConfigHREC}
function CreateCompatibleHRC(p1: HRC; p2: HREC): HRC; stdcall;
{$EXTERNALSYM CreateCompatibleHRC}
function CreateHWL(p1: HREC; p2: LPSTR; p3: UINT; p4: DWORD): HWL; stdcall;
{$EXTERNALSYM CreateHWL}
function CreateInksetHRCRESULT(p1: HRCRESULT; p2: UINT;
p3: UINT): HINKSET; stdcall;
{$EXTERNALSYM CreateInksetHRCRESULT}
function CreatePenDataHRC(p1: HRC): HPENDATA; stdcall;
{$EXTERNALSYM CreatePenDataHRC}
function DestroyHRC(p1: HRC): Integer; stdcall;
{$EXTERNALSYM DestroyHRC}
function DestroyHRCRESULT(p1: HRCRESULT): Integer; stdcall;
{$EXTERNALSYM DestroyHRCRESULT}
function DestroyHWL(p1: HWL): Integer; stdcall;
{$EXTERNALSYM DestroyHWL}
function EnableGestureSetHRC(p1: HRC; p2: SYV; p3: BOOL): Integer; stdcall;
{$EXTERNALSYM EnableGestureSetHRC}
function EnableSystemDictionaryHRC(p1: HRC; p2: BOOL): Integer; stdcall;
{$EXTERNALSYM EnableSystemDictionaryHRC}
function EndPenInputHRC(p1: HRC): Integer; stdcall;
{$EXTERNALSYM EndPenInputHRC}
function GetAlphabetHRC(p1: HRC; p2: PALC; p3: PByte): Integer; stdcall;
{$EXTERNALSYM GetAlphabetHRC}
function GetAlphabetPriorityHRC(p1: HRC; p2: PALC; p3: PByte): Integer; stdcall;
{$EXTERNALSYM GetAlphabetPriorityHRC}
function GetAlternateWordsHRCRESULT(p1: HRCRESULT; p2: UINT; p3: UINT;
p4: PHRCRESULT; p5: UINT): Integer; stdcall;
{$EXTERNALSYM GetAlternateWordsHRCRESULT}
function GetBoxMappingHRCRESULT(p1: HRCRESULT; p2, p3: UINT;
p4: PUINT): Integer; stdcall;
{$EXTERNALSYM GetBoxMappingHRCRESULT}
function GetBoxResultsHRC(p1: HRC; p2, p3, p4: UINT;
p5: PBoxResults; p6: BOOL): Integer; stdcall;
{$EXTERNALSYM GetBoxResultsHRC}
function GetGuideHRC(p1: HRC; p2: PGuide; p3: PUINT): Integer; stdcall;
{$EXTERNALSYM GetGuideHRC}
function GetHotspotsHRCRESULT(p1: HRCRESULT; p2: UINT; p3: PPoint;
p4: UINT): Integer; stdcall;
{$EXTERNALSYM GetHotspotsHRCRESULT}
function GetHRECFromHRC(p1: HRC): HREC; stdcall;
{$EXTERNALSYM GetHRECFromHRC}
function GetInternationalHRC(p1: HRC; p2: PUINT; p3: LPSTR; p4: PUINT;
p5: PUINT): Integer; stdcall;
{$EXTERNALSYM GetInternationalHRC}
function GetMaxResultsHRC(p1: HRC): Integer; stdcall;
{$EXTERNALSYM GetMaxResultsHRC}
function GetResultsHRC(p1: HRC; p2: UINT; p3: PHRCRESULT;
p4: UINT): Integer; stdcall;
{$EXTERNALSYM GetResultsHRC}
function GetSymbolCountHRCRESULT(p1: HRCRESULT): Integer; stdcall;
{$EXTERNALSYM GetSymbolCountHRCRESULT}
function GetSymbolsHRCRESULT(p1: HRCRESULT; p2: UINT; p3: PSYV;
p4: UINT): Integer; stdcall;
{$EXTERNALSYM GetSymbolsHRCRESULT}
function GetWordlistHRC(p1: HRC; p2: PHWL): Integer; stdcall;
{$EXTERNALSYM GetWordlistHRC}
function GetWordlistCoercionHRC(p1: HRC): Integer; stdcall;
{$EXTERNALSYM GetWordlistCoercionHRC}
function ProcessHRC(p1: HRC; p2: DWORD): Integer; stdcall;
{$EXTERNALSYM ProcessHRC}
function ReadHWL(p1: HWL; p2: HFILE): Integer; stdcall;
{$EXTERNALSYM ReadHWL}
function SetAlphabetHRC(p1: HRC; p2: ALC; p3: PByte): Integer; stdcall;
{$EXTERNALSYM SetAlphabetHRC}
function SetAlphabetPriorityHRC(p1: HRC; p2: ALC; p3: PByte): Integer; stdcall;
{$EXTERNALSYM SetAlphabetPriorityHRC}
function SetBoxAlphabetHRC(p1: HRC; p2: PALC; p3: UINT): Integer; stdcall;
{$EXTERNALSYM SetBoxAlphabetHRC}
function SetGuideHRC(p1: HRC; p2: PGuide; p3: UINT): Integer; stdcall;
{$EXTERNALSYM SetGuideHRC}
function SetInternationalHRC(p1: HRC; p2: UINT; p3: LPCSTR; p4: UINT;
p5: UINT): Integer; stdcall;
{$EXTERNALSYM SetInternationalHRC}
function SetMaxResultsHRC(p1: HRC; p2: UINT): Integer; stdcall;
{$EXTERNALSYM SetMaxResultsHRC}
function SetResultsHookHREC(p1: HREC; var p2: TFNHRCResultHookProc): HRECHOOK; stdcall;
{$EXTERNALSYM SetResultsHookHREC}
function SetWordlistCoercionHRC(p1: HRC; p2: UINT): Integer; stdcall;
{$EXTERNALSYM SetWordlistCoercionHRC}
function SetWordlistHRC(p1: HRC; p2: HWL): Integer; stdcall;
{$EXTERNALSYM SetWordlistHRC}
function TrainHREC(p1: HREC; p2: PSYV; p3: UINT; p4: HPENDATA;
p5: UINT): Integer; stdcall;
{$EXTERNALSYM TrainHREC}
function UnhookResultsHookHREC(p1: HREC; p2: HRECHOOK): Integer; stdcall;
{$EXTERNALSYM UnhookResultsHookHREC}
function WriteHWL(p1: HWL; p2: HFILE): Integer; stdcall;
{$EXTERNALSYM WriteHWL}
{ Recognizer Installation: }
function InstallRecognizer(p1: LPSTR): HREC; stdcall;
{$EXTERNALSYM InstallRecognizer}
function UninstallRecognizer(p1: HREC): Pointer; stdcall;
{$EXTERNALSYM UninstallRecognizer}
{ Inksets: }
function AddInksetInterval(p1: HINKSET; p2: PInterval): BOOL; stdcall;
{$EXTERNALSYM AddInksetInterval}
function CreateInkset(p1: UINT): HINKSET; stdcall;
{$EXTERNALSYM CreateInkset}
function DestroyInkset(p1: HINKSET): BOOL; stdcall;
{$EXTERNALSYM DestroyInkset}
function GetInksetInterval(p1: HINKSET; p2: UINT; p3: PInterval): Integer; stdcall;
{$EXTERNALSYM GetInksetInterval}
function GetInksetIntervalCount(p1: HINKSET): Integer; stdcall;
{$EXTERNALSYM GetInksetIntervalCount}
{ Symbol Values: }
function CharacterToSymbol(p1: LPSTR; p2: Integer; p3: PSYV): Integer; stdcall;
{$EXTERNALSYM CharacterToSymbol}
function SymbolToCharacter(p1: PSYV; p2: Integer; p3: LPSTR;
p4: PINT): BOOL; stdcall;
{$EXTERNALSYM SymbolToCharacter}
{ Pen Input/Inking: }
function DoDefaultPenInput(p1: HWND; p2: UINT): Integer; stdcall;
{$EXTERNALSYM DoDefaultPenInput}
function GetPenInput(p1: HPCM; p2: PPoint; p3: Pointer; p4: UINT; p5: UINT;
p6: PStrokeInfo): Integer; stdcall;
{$EXTERNALSYM GetPenInput}
function PeekPenInput(p1: HPCM; p2: UINT; p3: PPoint; p4: Pointer;
p5: UINT): Integer; stdcall;
{$EXTERNALSYM PeekPenInput}
function StartInking(p1: HPCM; p2: UINT; p3: PInkingInfo): Integer; stdcall;
{$EXTERNALSYM StartInking}
function StartPenInput(p1: HWND; p2: UINT; p3: PPCMInfo;
p4: PINT): HPCM; stdcall;
{$EXTERNALSYM StartPenInput}
function StopInking(p1: HPCM): Integer; stdcall;
{$EXTERNALSYM StopInking}
function StopPenInput(p1: HPCM; p2: UINT; p3: Integer): Integer; stdcall;
{$EXTERNALSYM StopPenInput}
{ Miscellaneous/Utilities: }
function BoundingRectFromPoints(p1: PPoint; p2: UINT;
p3: PRect): Pointer; stdcall;
{$EXTERNALSYM BoundingRectFromPoints}
function DPtoTP(p1: PPoint; p2: Integer): BOOL; stdcall;
{$EXTERNALSYM DPtoTP}
function GetPenAppFlags: UINT; stdcall;
{$EXTERNALSYM GetPenAppFlags}
function SetPenAppFlags(p1: UINT; p2: UINT): Pointer; stdcall;
{$EXTERNALSYM SetPenAppFlags}
function GetPenMiscInfo(p1: WPARAM; p2: LPARAM): Longint; stdcall;
{$EXTERNALSYM GetPenMiscInfo}
function GetVersionPenWin: UINT; stdcall;
{$EXTERNALSYM GetVersionPenWin}
function SetPenMiscInfo(p1: WPARAM; p2: LPARAM): Longint; stdcall;
{$EXTERNALSYM SetPenMiscInfo}
function TPtoDP(p1: PPoint; p2: Integer): BOOL; stdcall;
{$EXTERNALSYM TPtoDP}
function CorrectWriting(p1: HWND; p2: LPSTR; p3: UINT; p4: Pointer; p5: DWORD;
p6: DWORD): BOOL; stdcall;
{$EXTERNALSYM CorrectWriting}
{ Ink Targeting: }
function TargetPoints(p1: PTargInfo; p2: PPoint; p3: DWORD; p4: UINT;
p5: PStrokeInfo): Integer; stdcall;
{$EXTERNALSYM TargetPoints}
{ Kanji }
function KKConvert(hwndConvert: HWND; hwndCaller: HWND; lpBuf: LPSTR;
cbBuf: UINT; lpPnt: PPoint): BOOL; stdcall;
{$EXTERNALSYM KKConvert}
implementation
const
penwin32 = 'penwin32.dll';
function AddInksetInterval; external penwin32 name 'AddInksetInterval';
function AddPenDataHRC; external penwin32 name 'AddPenDataHRC';
function AddPenInputHRC; external penwin32 name 'AddPenInputHRC';
function AddPointsPenData; external penwin32 name 'AddPointsPenData';
function AddWordsHWL; external penwin32 name 'AddWordsHWL';
function BoundingRectFromPoints; external penwin32 name 'BoundingRectFromPoints';
function CharacterToSymbol; external penwin32 name 'CharacterToSymbol';
function CompressPenData; external penwin32 name 'CompressPenData';
function ConfigHREC; external penwin32 name 'ConfigHREC';
function CorrectWriting; external penwin32 name 'CorrectWriting';
function CreateCompatibleHRC; external penwin32 name 'CreateCompatibleHRC';
function CreateHWL; external penwin32 name 'CreateHWL';
function CreateInkset; external penwin32 name 'CreateInkset';
function CreateInksetHRCRESULT; external penwin32 name 'CreateInksetHRCRESULT';
function CreatePenDataEx; external penwin32 name 'CreatePenDataEx';
function CreatePenDataHRC; external penwin32 name 'CreatePenDataHRC';
function CreatePenDataRegion; external penwin32 name 'CreatePenDataRegion';
function DestroyHRC; external penwin32 name 'DestroyHRC';
function DestroyHRCRESULT; external penwin32 name 'DestroyHRCRESULT';
function DestroyHWL; external penwin32 name 'DestroyHWL';
function DestroyInkset; external penwin32 name 'DestroyInkset';
function DestroyPenData; external penwin32 name 'DestroyPenData';
function DoDefaultPenInput; external penwin32 name 'DoDefaultPenInput';
function DPtoTP; external penwin32 name 'DPtoTP';
function DrawPenDataEx; external penwin32 name 'DrawPenDataEx';
function DuplicatePenData; external penwin32 name 'DuplicatePenData';
function EnableGestureSetHRC; external penwin32 name 'EnableGestureSetHRC';
function EnableSystemDictionaryHRC; external penwin32 name 'EnableSystemDictionaryHRC';
function EndPenInputHRC; external penwin32 name 'EndPenInputHRC';
function ExtractPenDataPoints; external penwin32 name 'ExtractPenDataPoints';
function ExtractPenDataStrokes; external penwin32 name 'ExtractPenDataStrokes';
function GetAlphabetHRC; external penwin32 name 'GetAlphabetHRC';
function GetAlphabetPriorityHRC; external penwin32 name 'GetAlphabetPriorityHRC';
function GetAlternateWordsHRCRESULT; external penwin32 name 'GetAlternateWordsHRCRESULT';
function GetBoxMappingHRCRESULT; external penwin32 name 'GetBoxMappingHRCRESULT';
function GetBoxResultsHRC; external penwin32 name 'GetBoxResultsHRC';
function GetGuideHRC; external penwin32 name 'GetGuideHRC';
function GetHotspotsHRCRESULT; external penwin32 name 'GetHotspotsHRCRESULT';
function GetHRECFromHRC; external penwin32 name 'GetHRECFromHRC';
function GetInksetInterval; external penwin32 name 'GetInksetInterval';
function GetInksetIntervalCount; external penwin32 name 'GetInksetIntervalCount';
function GetInternationalHRC; external penwin32 name 'GetInternationalHRC';
function GetMaxResultsHRC; external penwin32 name 'GetMaxResultsHRC';
function GetPenAppFlags; external penwin32 name 'GetPenAppFlags';
function GetPenAsyncState; external penwin32 name 'GetPenAsyncState';
function GetPenDataAttributes; external penwin32 name 'GetPenDataAttributes';
function GetPenDataInfo; external penwin32 name 'GetPenDataInfo';
function GetPenInput; external penwin32 name 'GetPenInput';
function GetPenMiscInfo; external penwin32 name 'GetPenMiscInfo';
function GetPointsFromPenData; external penwin32 name 'GetPointsFromPenData';
function GetResultsHRC; external penwin32 name 'GetResultsHRC';
function GetStrokeAttributes; external penwin32 name 'GetStrokeAttributes';
function GetStrokeTableAttributes; external penwin32 name 'GetStrokeTableAttributes';
function GetSymbolCountHRCRESULT; external penwin32 name 'GetSymbolCountHRCRESULT';
function GetSymbolsHRCRESULT; external penwin32 name 'GetSymbolsHRCRESULT';
function GetVersionPenWin; external penwin32 name 'GetVersionPenWin';
function GetWordlistCoercionHRC; external penwin32 name 'GetWordlistCoercionHRC';
function GetWordlistHRC; external penwin32 name 'GetWordlistHRC';
function HitTestPenData; external penwin32 name 'HitTestPenData';
function InsertPenData; external penwin32 name 'InsertPenData';
function InsertPenDataPoints; external penwin32 name 'InsertPenDataPoints';
function InsertPenDataStroke; external penwin32 name 'InsertPenDataStroke';
function InstallRecognizer; external penwin32 name 'InstallRecognizer';
function IsPenEvent; external penwin32 name 'IsPenEvent';
function KKConvert; external penwin32 name 'KKConvert';
function MetricScalePenData; external penwin32 name 'MetricScalePenData';
function OffsetPenData; external penwin32 name 'OffsetPenData';
function PeekPenInput; external penwin32 name 'PeekPenInput';
function PenDataFromBuffer; external penwin32 name 'PenDataFromBuffer';
function PenDataToBuffer; external penwin32 name 'PenDataToBuffer';
function ProcessHRC; external penwin32 name 'ProcessHRC';
function ReadHWL; external penwin32 name 'ReadHWL';
function RedisplayPenData; external penwin32 name 'RedisplayPenData';
function RemovePenDataStrokes; external penwin32 name 'RemovePenDataStrokes';
function ResizePenData; external penwin32 name 'ResizePenData';
function SetAlphabetHRC; external penwin32 name 'SetAlphabetHRC';
function SetAlphabetPriorityHRC; external penwin32 name 'SetAlphabetPriorityHRC';
function SetBoxAlphabetHRC; external penwin32 name 'SetBoxAlphabetHRC';
function SetGuideHRC; external penwin32 name 'SetGuideHRC';
function SetInternationalHRC; external penwin32 name 'SetInternationalHRC';
function SetMaxResultsHRC; external penwin32 name 'SetMaxResultsHRC';
function SetPenAppFlags; external penwin32 name 'SetPenAppFlags';
function SetPenMiscInfo; external penwin32 name 'SetPenMiscInfo';
function SetResultsHookHREC; external penwin32 name 'SetResultsHookHREC';
function SetStrokeAttributes; external penwin32 name 'SetStrokeAttributes';
function SetStrokeTableAttributes; external penwin32 name 'SetStrokeTableAttributes';
function SetWordlistCoercionHRC; external penwin32 name 'SetWordlistCoercionHRC';
function SetWordlistHRC; external penwin32 name 'SetWordlistHRC';
function StartInking; external penwin32 name 'StartInking';
function StartPenInput; external penwin32 name 'StartPenInput';
function StopInking; external penwin32 name 'StopInking';
function StopPenInput; external penwin32 name 'StopPenInput';
function SymbolToCharacter; external penwin32 name 'SymbolToCharacter';
function TargetPoints; external penwin32 name 'TargetPoints';
function TPtoDP; external penwin32 name 'TPtoDP';
function TrainHREC; external penwin32 name 'TrainHREC';
function TrimPenData; external penwin32 name 'TrimPenData';
function UnhookResultsHookHREC; external penwin32 name 'UnhookResultsHookHREC';
function UninstallRecognizer; external penwin32 name 'UninstallRecognizer';
function WriteHWL; external penwin32 name 'WriteHWL';
function FPenUpX(X: Integer): BOOL;
begin
Result := (X and BITPENUP) <> 0;
end;
function GetWEventRef: Word;
begin
Result := Word(GetMessageExtraInfo);
end;
function MpAlcB(lprc: PRC; i: Word): PByte;
begin
Result := @lprc^.rgbfAlc[ (i and $FF) shr 3 ];
end;
function MpIbf(i: Word): Byte;
begin
Result := 1 shl (i and 7);
end;
procedure SetAlcBitAnsi(lprc: PRC; i: Word);
var
P: PByte;
begin
P := MpAlcB(lprc, i);
P^ := P^ or MpIbf(i);
end;
procedure ResetAlcBitAnsi(lprc: PRC; i: Word);
var
P: PByte;
begin
P := MpAlcB(lprc, i);
P^ := P^ and not MpIbf(i);
end;
function IsAlcBitAnsi(lprc: PRC; i: Word): Boolean;
begin
Result := MpAlcB(lprc,i)^ and MpIbf(i) <> 0;
end;
function DrawPenDataFmt(hdc: HDC; lprect: PRect; hpndt: THandle): Integer;
begin
Result := DrawPenDataEx(hdc, lprect, hpndt, 0, IX_END, 0, IX_END, nil, nil, 0);
end;
function dwDiffAT(at1, at2: TAbsTime): Integer;
begin
Result := 1000 * (at2.sec - at1.sec) - (at1.ms + at2.ms);
end;
function FLTAbsTime(at1, at2: TAbsTime): Boolean;
begin
Result := (at1.sec < at2.sec) or ((at1.sec = at2.sec) and (at1.ms < at2.ms));
end;
function FLTEAbsTime(at1, at2: TAbsTime): Boolean;
begin
Result := (at1.sec < at2.sec) or ((at1.sec = at2.sec) and (at1.ms <= at2.ms));
end;
function FEQAbsTime(at1, at2: TAbsTime): Boolean;
begin
Result := (at1.sec = at2.sec) and (at1.ms = at2.ms);
end;
function FAbsTimeInInterval(at: TAbsTime; lpi: PInterval): Boolean;
begin
Result := FLTEAbsTime(lpi^.atBegin, at) and FLTEAbsTime(at, lpi^.atEnd);
end;
function FIntervalInInterval(lpiT, lpiS: PInterval): Boolean;
begin
Result := FLTEAbsTime(lpiS^.atBegin, lpiT^.atBegin) and
FLTEAbsTime(lpiT^.atEnd, lpiS^.atEnd);
end;
function FIntervalXInterval(lpiT, lpiS: PInterval): Boolean;
begin
Result := (not FLTAbsTime(lpiT^.atEnd, lpiS^.atBegin)) or
FLTAbsTime(lpiS^.atEnd, lpiT^.atBegin);
end;
function dwDurInterval(lpi: PInterval): Integer;
begin
Result := dwDiffAT(lpi^.atBegin, lpi^.atEnd);
end;
procedure MakeAbsTime(var lpat: TAbsTime; sec, ms: Integer);
begin
lpat.sec := sec + ms div 1000;
lpat.ms := ms mod 1000;
end;
function FIsSpecial(syv: DWORD): Boolean;
begin
Result := HiWord(syv) = SYVHI_SPECIAL;
end;
function FIsAnsi(syv: DWORD): Boolean;
begin
Result := HiWord(syv) = SYVHI_ANSI;
end;
function FIsGesture(syv: DWORD): Boolean;
begin
Result := HiWord(syv) = SYVHI_GESTURE;
end;
function FIsKanji(syv: DWORD): Boolean;
begin
Result := HiWord(syv) = SYVHI_KANJI;
end;
function FIsShape(syv: DWORD): Boolean;
begin
Result := HiWord(syv) = SYVHI_SHAPE;
end;
function FIsUniCode(syv: DWORD): Boolean;
begin
Result := HiWord(syv) = SYVHI_UNICODE;
end;
function FIsVKey(syv: DWORD): Boolean;
begin
Result := HiWord(syv) = SYVHI_VKEY;
end;
function ChSyvToAnsi(syv: DWORD): Byte;
begin
Result := Byte(LOWORD(syv));
end;
function WSyvToKanji(syv: DWORD): Word;
begin
Result := LOWORD(syv);
end;
function SyvCharacterToSymbol(c: Char): DWORD;
begin
Result := Byte(c) or $10000;
end;
function SyvKanjiToSymbol(c: Char): DWORD;
begin
Result := Byte(c) or $30000;
end;
function FIsSelectGesture(syv: DWORD): Boolean;
begin
Result := (syv >= SYV_SELECTFIRST) and (syv <= SYV_SELECTLAST);
end;
function FIsStdGesture(syv: DWORD): Boolean;
begin
Result := FIsSelectGesture(syv) or (syv = SYV_CLEAR) or (syv = SYV_HELP) or
(syv = SYV_EXTENDSELECT) or (syv = SYV_UNDO) or (syv = SYV_COPY) or
(syv = SYV_CUT) or (syv = SYV_PASTE) or (syv = SYV_CLEARWORD) or
(syv = SYV_KKCONVERT) or (syv = SYV_USER) or (syv = SYV_CORRECT);
end;
function FIsAnsiGesture(syv: DWORD): Boolean;
begin
Result := (syv = SYV_BACKSPACE) or (syv = SYV_TAB) or
(syv = SYV_RETURN) or (syv = SYV_SPACE);
end;
function SubPenMsgFromWpLp(wp, lp: DWORD): Word;
begin
Result := LOWORD(wp);
end;
function EventRefFromWpLp(wp, lp: DWORD): Word;
begin
Result := HiWord(wp);
end;
function TerminationFromWpLp(wp, lp: DWORD): Integer;
begin
Result := HiWord(wp);
end;
function HpcmFromWpLp(wp, lp: DWORD): Integer;
begin
Result := HPCM(lp);
end;
function HwndFromHtrg(trg: HTRG): HWND;
begin
Result := HWND(trg);
end;
function HtrgFromHwnd(hwnd: HWND): HTRG;
begin
Result := HTRG(hwnd);
end;
end.