/****************************************************************************\ * * * PENWIN.H - Pen Windows functions, types, and definitions * * * * Version 2.0 * * * * Copyright (c) 1992-1999 Microsoft Corp. All rights reserved. * * * ******************************************************************************* * * The following symbols control inclusion of various parts of this file; * (indented identifiers are included by the previous main identifier): * * #define: To prevent inclusion of: * * PENVER Pen Windows version number (0x0200). To exclude * definitions introduced in version 2.0 (or above) * #define PENVER 0x0100 before #including * * NOJAPAN JAPAN-specific code * NOPENALC Alphabet Code definitions and macros * NOPENAPPS Pen Applications: Screen Keyboard * NOPENCTL H/BEDIT, IEDIT, and pen-enabled USER controls, including: * NOPENBEDIT : Boxed Edit Control * NOPENIEDIT : Ink Edit Control * NOPENHEDIT : (H)Edit control * NOPENDATA PenData APIs and definitions * NOPENDICT Dictionary support * NOPENDRIVER Pen Driver definitions, incl OEM * NOPENHRC Handwriting Recognizer APIs and definitions * NOPENINKPUT Inking and Input APIs and definitions * NOPENMISC Miscellaneous Info and Utility APIs and definitions * NOPENMSGS Pen Messages and definitions * NOPENNLS National Language Support * NOPENRC1 Recognition Context APIs and definitions (1.0) * NOPENRES Pen resources, including: * NOPENBMP : Pen-related bitmaps * NOPENCURS : Pen-related cursors * NOPENTARGET Targeting APIs and definitions * NOPENVIRTEVENT Virtual Event layer APIs * * _WIN32 non-Win32 components, subincludes: * : NOPENAPPS, NOPENDICT, NOPENRC1, NOPENVIRTEVENT * * "FBC" in the comments means that the feature exists only for * backward compatibility. It should not be used by new applications. \****************************************************************************/ #ifndef _INC_PENWIN #define _INC_PENWIN #if _MSC_VER > 1000 #pragma once #endif /////////////////////////////////////////////////// #ifndef NOJAPAN // unless expressly overridden... #ifndef JAPAN #define JAPAN // This is the Japanese version! #endif //!JAPAN #endif //!NOJAPAN /////////////////////////////////////////////////// #include #ifndef _WIN32 #ifndef RC_INVOKED #pragma pack(1) #endif /* RC_INVOKED */ #endif //!_WIN32 #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #ifndef PENVER /* may be pre-defined; otherwise assume version 2.0 */ #define PENVER 0x0200 #endif //!PENVER #ifdef _WIN32 #define NOPENAPPS #define NOPENDICT #define NOPENRC1 #define NOPENVIRTEVENT #define NOPENAPIFUN #endif //_WIN32 #ifndef NOPENAPPS // not available in WIN32 #ifndef RC_INVOKED #include #endif /* !RC_INVOKED */ #endif /*!NOPENAPPS */ // other subsets: #ifdef NOPENCTL #define NOPENBEDIT #define NOPENIEDIT #endif /* NOPENCTL */ #ifdef NOPENRES #define NOPENBMP #define NOPENCURS #endif /* NOPENRES */ ////////////////////////////////////////////////////////////////////////////// /****** Definitions 1: for everything including RC compiler *****************/ //--------------------------------------------------------------------------- #ifndef NOPENALC // Enabled Alphabet: #define ALC_DEFAULT 0x00000000L // nothing #define ALC_LCALPHA 0x00000001L // a..z #define ALC_UCALPHA 0x00000002L // A..Z #define ALC_NUMERIC 0x00000004L // 0..9 #define ALC_PUNC 0x00000008L // !-;`"?()&.,; and backslash #define ALC_MATH 0x00000010L // %^*()-+={}<>,/. #define ALC_MONETARY 0x00000020L // ,.$ or local #define ALC_OTHER 0x00000040L // @#|_~[] #define ALC_ASCII 0x00000080L // restrict to 7-bit chars 20..7f #define ALC_WHITE 0x00000100L // white space #define ALC_NONPRINT 0x00000200L // sp tab ret ctrl glyphs #define ALC_DBCS 0x00000400L // allow DBCS variety of SBCS #define ALC_JIS1 0x00000800L // kanji JPN, ShiftJIS 1 only #define ALC_GESTURE 0x00004000L // gestures #define ALC_USEBITMAP 0x00008000L // use rc.rgbfAlc to enable chars #define ALC_HIRAGANA 0x00010000L // hiragana JPN #define ALC_KATAKANA 0x00020000L // katakana JPN #define ALC_KANJI 0x00040000L // kanji JPN, ShiftJIS 1+2+3 #define ALC_GLOBALPRIORITY 0x10000000L #define ALC_OEM 0x0FF80000L // OEM recognizer-specific #define ALC_RESERVED 0xE0003000L // avail for future use #define ALC_NOPRIORITY 0x00000000L // for alcPriority == none #define ALC_ALPHA\ (ALC_LCALPHA | ALC_UCALPHA) // 0x00000003L #define ALC_ALPHANUMERIC\ (ALC_ALPHA | ALC_NUMERIC) // 0x00000007L #define ALC_SYSMINIMUM\ (ALC_ALPHANUMERIC | ALC_PUNC | ALC_WHITE | ALC_GESTURE) // 0x0000410FL #define ALC_ALL\ (ALC_SYSMINIMUM | ALC_MATH | ALC_MONETARY\ | ALC_OTHER | ALC_NONPRINT) // 0x0000437FL #define ALC_KANJISYSMINIMUM\ (ALC_SYSMINIMUM | ALC_HIRAGANA | ALC_KATAKANA | ALC_JIS1) // 0x0003490FL #define ALC_KANJIALL\ (ALC_ALL | ALC_HIRAGANA | ALC_KATAKANA | ALC_KANJI) // 0x0007437FL #endif /*!NOPENALC */ //--------------------------------------------------------------------------- #ifndef NOPENBEDIT // box edit styles: #define BXS_NONE 0x0000U // none #define BXS_RECT 0x0001U // use rectangle instead of cusp #define BXS_BOXCROSS 0x0004U // use cross at box center #ifdef JAPAN #define BXS_NOWRITING 0x0008U // no pen input into control #else #endif //JAPAN #endif /*!NOPENBEDIT */ //--------------------------------------------------------------------------- #ifndef NOPENBMP // Public Bitmaps : #define OBM_SKBBTNUP 32767 #define OBM_SKBBTNDOWN 32766 #define OBM_SKBBTNDISABLED 32765 #define OBM_ZENBTNUP 32764 #define OBM_ZENBTNDOWN 32763 #define OBM_ZENBTNDISABLED 32762 #define OBM_HANBTNUP 32761 #define OBM_HANBTNDOWN 32760 #define OBM_HANBTNDISABLED 32759 #define OBM_KKCBTNUP 32758 #define OBM_KKCBTNDOWN 32757 #define OBM_KKCBTNDISABLED 32756 #define OBM_SIPBTNUP 32755 #define OBM_SIPBTNDOWN 32754 #define OBM_SIPBTNDISABLED 32753 #define OBM_PTYBTNUP 32752 #define OBM_PTYBTNDOWN 32751 #define OBM_PTYBTNDISABLED 32750 #endif /*!NOPENBMP */ //--------------------------------------------------------------------------- #ifndef NOPENCURS // Default pen cursor to indicate writing, points northwest #define IDC_PEN MAKEINTRESOURCE(32631) // alternate select cursor: upsidedown standard arrow, points southeast #define IDC_ALTSELECT MAKEINTRESOURCE(32501) #endif /*!NOPENCURS */ //--------------------------------------------------------------------------- #ifndef NOPENHRC // special SYV values: #define SYV_NULL 0x00000000L #define SYV_UNKNOWN 0x00000001L #define SYV_EMPTY 0x00000003L #define SYV_BEGINOR 0x00000010L #define SYV_ENDOR 0x00000011L #define SYV_OR 0x00000012L #define SYV_SOFTNEWLINE 0x00000020L #define SYV_SPACENULL 0x00010000L // SyvCharacterToSymbol('\0') // SYV values for gestures: #define SYV_SELECTFIRST 0x0002FFC0L // . means circle in following #define SYV_LASSO 0x0002FFC1L // lasso o-tap #define SYV_SELECTLEFT 0x0002FFC2L // no glyph #define SYV_SELECTRIGHT 0x0002FFC3L // no glyph #define SYV_SELECTLAST 0x0002FFCFL // 16 SYVs reserved for selection #define SYV_CLEARCHAR 0x0002FFD2L // d. #define SYV_HELP 0x0002FFD3L // no glyph #define SYV_KKCONVERT 0x0002FFD4L // k. #define SYV_CLEAR 0x0002FFD5L // d. #define SYV_INSERT 0x0002FFD6L // ^. #define SYV_CONTEXT 0x0002FFD7L // m. #define SYV_EXTENDSELECT 0x0002FFD8L // no glyph #define SYV_UNDO 0x0002FFD9L // u. #define SYV_COPY 0x0002FFDAL // c. #define SYV_CUT 0x0002FFDBL // x. #define SYV_PASTE 0x0002FFDCL // p. #define SYV_CLEARWORD 0x0002FFDDL // no glyph #define SYV_USER 0x0002FFDEL // reserved #define SYV_CORRECT 0x0002FFDFL // check. #define SYV_BACKSPACE 0x00020008L // no glyph #define SYV_TAB 0x00020009L // t. #define SYV_RETURN 0x0002000DL // n. #define SYV_SPACE 0x00020020L // s. // Application specific gestures, Circle a-z and Circle A-Z: #define SYV_APPGESTUREMASK 0x00020000L #define SYV_CIRCLEUPA 0x000224B6L // map into Unicode space #define SYV_CIRCLEUPZ 0x000224CFL // for circled letters #define SYV_CIRCLELOA 0x000224D0L #define SYV_CIRCLELOZ 0x000224E9L // SYV definitions for shapes: #define SYV_SHAPELINE 0x00040001L #define SYV_SHAPEELLIPSE 0x00040002L #define SYV_SHAPERECT 0x00040003L #define SYV_SHAPEMIN SYV_SHAPELINE // alias #define SYV_SHAPEMAX SYV_SHAPERECT // alias // SYV classes: #define SYVHI_SPECIAL 0 #define SYVHI_ANSI 1 #define SYVHI_GESTURE 2 #define SYVHI_KANJI 3 #define SYVHI_SHAPE 4 #define SYVHI_UNICODE 5 #define SYVHI_VKEY 6 #endif //!NOPENHRC //--------------------------------------------------------------------------- #ifndef NOPENIEDIT // IEdit Pop-up Menu Command Items #define IEM_UNDO 1 // Undo #define IEM_CUT 2 // Cut #define IEM_COPY 3 // Copy #define IEM_PASTE 4 // Paste #define IEM_CLEAR 5 // Clear #define IEM_SELECTALL 6 // Select All Strokes #define IEM_ERASE 7 // Use Eraser #define IEM_PROPERTIES 8 // DoProperties #define IEM_LASSO 9 // Use Lasso #define IEM_RESIZE 10 // Resize #define IEM_USER 100 // first menu item# available to app // IEdit Style Attributes #define IES_BORDER 0x0001 // ctl has a border #define IES_HSCROLL 0x0002 // ctl is horizontally scrollable #define IES_VSCROLL 0x0004 // ctl is vertically scrollable #define IES_OWNERDRAW 0x0008 // ctl will be drawn by parent window #endif /*!NOPENIEDIT */ #ifndef RC_INVOKED // ... rest of file of no interest to rc compiler ////////////////////////////////////////////////////////////////////////////// /****** Definitions 2: RC compiler excluded ********************************/ //--------------------------------------------------------------------------- #ifndef NOPENDATA // PenData API constants: // ANIMATEINFO callback options: #define AI_CBSTROKE 0xFFFF // Animate callback after every stroke // ANIMATEINFO options: #define AI_SKIPUPSTROKES 0x0001 // ignore upstrokes in animation // CompressPenData() API options: #define CMPD_COMPRESS 0x0001 #define CMPD_DECOMPRESS 0x0002 // CreatePenDataRegion types: #define CPDR_BOX 1 // bounding box #define CPDR_LASSO 2 // lasso // CreatePenData (CPD) and Pen Hardware (PHW) Flags; // The order of PHW flags is important: #define CPD_DEFAULT 0x047F // CPD_TIME | PHW_ALL #define CPD_USERBYTE 0x0100 // alloc 8 bits/stroke #define CPD_USERWORD 0x0200 // alloc 16 bits/stroke #define CPD_USERDWORD 0x0300 // alloc 32 bits/stroke #define CPD_TIME 0x0400 // maintain abs time info per stroke // DrawPenDataEx() flags/options: #define DPD_HDCPEN 0x0001 // use pen selected in HDC #define DPD_DRAWSEL 0x0002 // draw the selection // ExtractPenDataPoints options (EPDP_xx): #define EPDP_REMOVE 0x0001 // Remove points from the pendata // ExtractPenDataStrokes options and modifiers (EPDS_xx): #define EPDS_SELECT 1 // selected strokes #define EPDS_STROKEINDEX 2 // index #define EPDS_USER 3 // user-specific value #define EPDS_PENTIP 4 // complete pentip #define EPDS_TIPCOLOR 5 // pentip color #define EPDS_TIPWIDTH 6 // pentip width #define EPDS_TIPNIB 7 // pentip nib style #define EPDS_INKSET 8 // inkset match #define EPDS_EQ 0x0000 // default: same as #define EPDS_LT 0x0010 // all strokes less than #define EPDS_GT 0x0020 // all strokes greater than #define EPDS_NOT 0x0040 // all strokes not matching #define EPDS_NE 0x0040 // alias #define EPDS_GTE 0x0050 // alias for NOT LT #define EPDS_LTE 0x0060 // alias for NOT GT #define EPDS_REMOVE 0x8000 // remove matching strokes from source // GetPenDataAttributes options (GPA_xx): #define GPA_MAXLEN 1 // length of longest stroke #define GPA_POINTS 2 // total number of points #define GPA_PDTS 3 // PDTS_xx bits #define GPA_RATE 4 // get sampling rate #define GPA_RECTBOUND 5 // bounding rect of all points #define GPA_RECTBOUNDINK 6 // ditto, adj for fat ink #define GPA_SIZE 7 // size of pendata in bytes #define GPA_STROKES 8 // total number of strokes #define GPA_TIME 9 // absolute time at creation of pendata #define GPA_USER 10 // number of user bytes available: 0, 1, 2, 4 #define GPA_VERSION 11 // version number of pendata // GetStrokeAttributes options (GSA_xx): #define GSA_PENTIP 1 // get stroke pentip (color, width, nib) #define GSA_PENTIPCLASS 2 // same as GSA_PENTIP #define GSA_USER 3 // get stroke user value #define GSA_USERCLASS 4 // get stroke's class user value #define GSA_TIME 5 // get time of stroke #define GSA_SIZE 6 // get size of stroke in points and bytes #define GSA_SELECT 7 // get selection status of stroke #define GSA_DOWN 8 // get up/down state of stroke #define GSA_RECTBOUND 9 // get the bounding rectangle of the stroke // GetStrokeTableAttributes options (GSA_xx): #define GSA_PENTIPTABLE 10 // get table-indexed pentip #define GSA_SIZETABLE 11 // get count of Stroke Class Table entries #define GSA_USERTABLE 12 // get table-indexed user value #ifndef IX_END #define IX_END 0xFFFF // to or past last available index #endif //!IX_END // PenTip: #define PENTIP_NIBDEFAULT ((BYTE)0) // default pen tip nib style #define PENTIP_HEIGHTDEFAULT ((BYTE)0) // default pen tip nib height #define PENTIP_OPAQUE ((BYTE)0xFF) // default opaque ink #define PENTIP_HILITE ((BYTE)0x80) #define PENTIP_TRANSPARENT ((BYTE)0) // General PenData API return values (PDR_xx): #define PDR_NOHIT 3 // hit test failed #define PDR_HIT 2 // hit test succeeded #define PDR_OK 1 // success #define PDR_CANCEL 0 // callback cancel or impasse #define PDR_ERROR (-1) // parameter or unspecified error #define PDR_PNDTERR (-2) // bad pendata #define PDR_VERSIONERR (-3) // pendata version error #define PDR_COMPRESSED (-4) // pendata is compressed #define PDR_STRKINDEXERR (-5) // stroke index error #define PDR_PNTINDEXERR (-6) // point index error #define PDR_MEMERR (-7) // memory error #define PDR_INKSETERR (-8) // bad inkset #define PDR_ABORT (-9) // pendata has become invalid, e.g. #define PDR_NA (-10) // option not available (pw kernel) #define PDR_USERDATAERR (-16) // user data error #define PDR_SCALINGERR (-17) // scale error #define PDR_TIMESTAMPERR (-18) // timestamp error #define PDR_OEMDATAERR (-19) // OEM data error #define PDR_SCTERR (-20) // SCT error (full) // PenData Scaling (PDTS): #define PDTS_LOMETRIC 0 // 0.01mm #define PDTS_HIMETRIC 1 // 0.001mm #define PDTS_HIENGLISH 2 // 0.001" #define PDTS_STANDARDSCALE 2 // PDTS_HIENGLISH alias #define PDTS_DISPLAY 3 // display pixel #define PDTS_ARBITRARY 4 // app-specific scaling #define PDTS_SCALEMASK 0x000F // scaling values in low nibble // CompactPenData() API trim options: #define PDTT_DEFAULT 0x0000 #define PDTT_PENINFO 0x0100 #define PDTT_UPPOINTS 0x0200 #define PDTT_OEMDATA 0x0400 #define PDTT_COLLINEAR 0x0800 #define PDTT_COLINEAR 0x0800 // alt sp alias #define PDTT_DECOMPRESS 0x4000 // decompress the data #define PDTT_COMPRESS 0x8000 #define PDTT_ALL 0x0F00 // PENINFO|UPPOINTS|OEMDATA|COLLINEAR #define PHW_NONE 0x0000 // no OEMdata #define PHW_PRESSURE 0x0001 // report pressure in OEMdata if avail #define PHW_HEIGHT 0x0002 // ditto height #define PHW_ANGLEXY 0x0004 // ditto xy angle #define PHW_ANGLEZ 0x0008 // ditto z angle #define PHW_BARRELROTATION 0x0010 // ditto barrel rotation #define PHW_OEMSPECIFIC 0x0020 // ditto OEM-specific value #define PHW_PDK 0x0040 // report per-point PDK_xx in OEM data #define PHW_ALL 0x007F // report everything // compact pen data trim options: matches PDTT_values (see above) #define PDTS_COMPRESS2NDDERIV 0x0010 // compress using 2nd deriv #define PDTS_COMPRESSMETHOD 0x00F0 // sum of compress method flags #define PDTS_NOPENINFO 0x0100 // removes PENINFO struct from header #define PDTS_NOUPPOINTS 0x0200 // remove up pts #define PDTS_NOOEMDATA 0x0400 // remove OEM data #define PDTS_NOCOLLINEAR 0x0800 // remove successive identical pts #define PDTS_NOCOLINEAR 0x0800 // alt sp alias #define PDTS_NOTICK 0x1000 // remove timing info (2.0) #define PDTS_NOUSER 0x2000 // remove user info (2.0) #define PDTS_NOEMPTYSTROKES 0x4000 // remove empty strokes (2.0) #define PDTS_COMPRESSED 0x8000 // perform lossless compression // SetStrokeAttributes options (SSA_xx): #define SSA_PENTIP 1 // set stroke tip (color, width, nib) #define SSA_PENTIPCLASS 2 // set stroke's class pentip #define SSA_USER 3 // set stroke user value #define SSA_USERCLASS 4 // set stroke's class user value #define SSA_TIME 5 // set time of stroke #define SSA_SELECT 6 // set selection status of stroke #define SSA_DOWN 7 // set up/down state of stroke // SetStrokeTableAttributes options (SSA_xx): #define SSA_PENTIPTABLE 8 // set table-indexed pentip #define SSA_USERTABLE 9 // set table-indexed user value // PenTip flag bits: #define TIP_ERASECOLOR 1 // erase specific color pentip.rgb // TrimPenData() API options: #define TPD_RECALCSIZE 0x0000 // no trim, used for resize calc #define TPD_USER 0x0080 // per-stroke user info #define TPD_TIME 0x0100 // per-stroke timing info #define TPD_UPPOINTS 0x0200 // x-y data up points #define TPD_COLLINEAR 0x0400 // colinear and coincident points #define TPD_COLINEAR 0x0400 // alt sp alias #define TPD_PENINFO 0x0800 // PenInfo struct and all OEM #define TPD_PHW 0x1000 // OEM & pdk except stroke tick or user #define TPD_OEMDATA 0x1000 // ditto #define TPD_EMPTYSTROKES 0x2000 // strokes with zero points #define TPD_EVERYTHING 0x3FFF // everything (incl PHW_xx) except down pts #endif /*!NOPENDATA */ //--------------------------------------------------------------------------- #ifndef NOPENDICT // not available in WIN32 // Dictionary: #define cbDictPathMax 255 #define DIRQ_QUERY 1 #define DIRQ_DESCRIPTION 2 #define DIRQ_CONFIGURE 3 #define DIRQ_OPEN 4 #define DIRQ_CLOSE 5 #define DIRQ_SETWORDLISTS 6 #define DIRQ_STRING 7 #define DIRQ_SUGGEST 8 #define DIRQ_ADD 9 #define DIRQ_DELETE 10 #define DIRQ_FLUSH 11 #define DIRQ_RCCHANGE 12 #define DIRQ_SYMBOLGRAPH 13 #define DIRQ_INIT 14 #define DIRQ_CLEANUP 15 #define DIRQ_COPYRIGHT 16 #define DIRQ_USER 4096 #endif /*!NOPENDICT */ //--------------------------------------------------------------------------- #ifndef NOPENDRIVER // Pen driver: #define BITPENUP 0x8000 // Pen Driver messages: #define DRV_SetPenDriverEntryPoints DRV_RESERVED+1 #define DRV_SetEntryPoints DRV_RESERVED+1 // alias #define DRV_RemovePenDriverEntryPoints DRV_RESERVED+2 #define DRV_RemoveEntryPoints DRV_RESERVED+2 // alias #define DRV_SetPenSamplingRate DRV_RESERVED+3 #define DRV_SetPenSamplingDist DRV_RESERVED+4 #define DRV_GetName DRV_RESERVED+5 #define DRV_GetVersion DRV_RESERVED+6 #define DRV_GetPenInfo DRV_RESERVED+7 #define DRV_PenPlayStart DRV_RESERVED+8 #define DRV_PenPlayBack DRV_RESERVED+9 #define DRV_PenPlayStop DRV_RESERVED+10 #define DRV_GetCalibration DRV_RESERVED+11 #define DRV_SetCalibration DRV_RESERVED+12 #define DRV_Reserved1 DRV_RESERVED+13 #define DRV_Reserved2 DRV_RESERVED+14 #define DRV_Query DRV_RESERVED+15 #define DRV_GetPenSamplingRate DRV_RESERVED+16 #define DRV_Calibrate DRV_RESERVED+17 // Pen Driver Playback constants: #define PLAY_VERSION_10_DATA 0 #define PLAY_VERSION_20_DATA 1 // Pen Driver return values: #define DRV_FAILURE 0x00000000 #define DRV_SUCCESS 0x00000001 #define DRV_BADPARAM1 0xFFFFFFFF #define DRV_BADPARAM2 0xFFFFFFFE #define DRV_BADSTRUCT 0xFFFFFFFD // Pen Driver register messages flags: #define PENREG_DEFAULT 0x00000002 #define PENREG_WILLHANDLEMOUSE 0x00000001 #define MAXOEMDATAWORDS 6 // rgwOemData[MAXOEMDATAWORDS] // Pen Collection Mode termination conditions: // (note update doc for PCMINFO struct if change these) #define PCM_PENUP 0x00000001L // stop on penup #define PCM_RANGE 0x00000002L // stop on leaving range #define PCM_INVERT 0x00000020L // stop on tap of opposite end #define PCM_RECTEXCLUDE 0x00002000L // click in exclude rect #define PCM_RECTBOUND 0x00004000L // click outside bounds rect #define PCM_TIMEOUT 0x00008000L // no activity for timeout ms // new for 2.0: #define PCM_RGNBOUND 0x00010000L // click outside bounding region #define PCM_RGNEXCLUDE 0x00020000L // click in exclude region #define PCM_DOPOLLING 0x00040000L // polling mode #define PCM_TAPNHOLD 0x00080000L // check for Tap And Hold #define PCM_ADDDEFAULTS RC_LDEFAULTFLAGS /* 0x80000000L */ // Pen Device Capabilities: #define PDC_INTEGRATED 0x00000001L // display==digitizer #define PDC_PROXIMITY 0x00000002L // detect non-contacting pen #define PDC_RANGE 0x00000004L // event on out-of-range #define PDC_INVERT 0x00000008L // pen opposite end detect #define PDC_RELATIVE 0x00000010L // pen driver coords #define PDC_BARREL1 0x00000020L // barrel button 1 present #define PDC_BARREL2 0x00000040L // ditto 2 #define PDC_BARREL3 0x00000080L // ditto 3 // Pen Driver Kit states: #define PDK_NULL 0x0000 // default to no flags set #define PDK_UP 0x0000 // PDK_NULL alias #define PDK_DOWN 0x0001 // pentip switch ON due to contact #define PDK_BARREL1 0x0002 // barrel1 switch depressed #define PDK_BARREL2 0x0004 // ditto 2 #define PDK_BARREL3 0x0008 // ditto 3 #define PDK_SWITCHES 0x000f // sum of down + barrels 1,2,3 #define PDK_TRANSITION 0x0010 // set by GetPenHwData #define PDK_UNUSED10 0x0020 #define PDK_UNUSED20 0x0040 #define PDK_INVERTED 0x0080 // other end of pen used as tip #define PDK_PENIDMASK 0x0F00 // bits 8..11 physical pen id (0..15) #define PDK_UNUSED1000 0x1000 #define PDK_INKSTOPPED 0x2000 // Inking stopped #define PDK_OUTOFRANGE 0x4000 // pen left range (OEM data invalid) #define PDK_DRIVER 0x8000 // pen (not mouse) event #define PDK_TIPMASK 0x0001 // mask for testing PDK_DOWN // OEM-specific values for Pen Driver: #define PDT_NULL 0 #define PDT_PRESSURE 1 // pressure supported #define PDT_HEIGHT 2 // height above tablet #define PDT_ANGLEXY 3 // xy (horiz) angle supported #define PDT_ANGLEZ 4 // z (vert) angle supported #define PDT_BARRELROTATION 5 // barrel is rotated #define PDT_OEMSPECIFIC 16 // max // Denotes the ID of the current packet #define PID_CURRENT (UINT)(-1) // Recognition and GetPenHwData Returns: #define REC_OEM (-1024) // first recognizer-specific debug val #define REC_LANGUAGE (-48) // unsupported language field #define REC_GUIDE (-47) // invalid GUIDE struct #define REC_PARAMERROR (-46) // bad param #define REC_INVALIDREF (-45) // invalid data ref param #define REC_RECTEXCLUDE (-44) // invalid rect #define REC_RECTBOUND (-43) // invalid rect #define REC_PCM (-42) // invalid lPcm parameter #define REC_RESULTMODE (-41) #define REC_HWND (-40) // invalid window to send results to #define REC_ALC (-39) // invalid enabled alphabet #define REC_ERRORLEVEL (-38) // invalid errorlevel #define REC_CLVERIFY (-37) // invalid verification level #define REC_DICT (-36) // invalid dict params #define REC_HREC (-35) // invalid recognition handle #define REC_BADEVENTREF (-33) // invalid wEventRef #define REC_NOCOLLECTION (-32) // collection mode not set #define REC_DEBUG (-32) // beginning of debug values #define REC_POINTEREVENT (-31) // tap or tap&hold event #define REC_BADHPENDATA (-9) // invalid hpendata header or locking #define REC_OOM (-8) // out of memory error #define REC_NOINPUT (-7) // no data collected before termination #define REC_NOTABLET (-6) // tablet not physically present #define REC_BUSY (-5) // another task is using recognizer #define REC_BUFFERTOOSMALL (-4) // ret by GetPenHwEventData() #define REC_ABORT (-3) // recog stopped by EndPenCollection() #define REC_NA (-2) // function not available #define REC_OVERFLOW (-1) // data overflow #define REC_OK 0 // interrim completion #define REC_TERMBOUND 1 // hit outside bounding rect #define REC_TERMEX 2 // hit inside exclusion rect #define REC_TERMPENUP 3 // pen up #define REC_TERMRANGE 4 // pen left proximity #define REC_TERMTIMEOUT 5 // no writing for timeout ms #define REC_DONE 6 // normal completion #define REC_TERMOEM 512 // first recognizer-specific retval #endif /*!NOPENDRIVER */ //--------------------------------------------------------------------------- #ifndef NOPENHRC // Handwriting Recognizer: // GetResultsHRC options: #define GRH_ALL 0 // get all results #define GRH_GESTURE 1 // get only gesture results #define GRH_NONGESTURE 2 // get all but gesture results // Gesture sets for EnableGestureSetHRC (bit flags): #ifdef JAPAN #define GST_SEL 0x00000001L // sel & lasso #define GST_CLIP 0x00000002L // cut copy paste #define GST_WHITE 0x00000004L // sp tab ret #define GST_KKCONVERT 0x00000008L // kkconvert #define GST_EDIT 0x00000010L // insert correct undo clear #define GST_SYS 0x0000001FL // all of the above #define GST_CIRCLELO 0x00000100L // lowercase circle #define GST_CIRCLEUP 0x00000200L // uppercase circle #define GST_CIRCLE 0x00000300L // all circle #define GST_ALL 0x0000031FL // all of the above #else #define GST_SEL 0x00000001L // sel & lasso #define GST_CLIP 0x00000002L // cut copy paste #define GST_WHITE 0x00000004L // sp tab ret #define GST_EDIT 0x00000010L // insert correct undo clear #define GST_SYS 0x00000017L // all of the above #define GST_CIRCLELO 0x00000100L // lowercase circle #define GST_CIRCLEUP 0x00000200L // uppercase circle #define GST_CIRCLE 0x00000300L // all circle #define GST_ALL 0x00000317L // all of the above #endif // General HRC API return values (HRCR_xx): #define HRCR_NORESULTS 4 // No possible results to be found #define HRCR_COMPLETE 3 // finished recognition #define HRCR_GESTURE 2 // recognized gesture #define HRCR_OK 1 // success #define HRCR_INCOMPLETE 0 // recognizer is processing input #define HRCR_ERROR (-1) // invalid param or unspecified error #define HRCR_MEMERR (-2) // memory error #define HRCR_INVALIDGUIDE (-3) // invalid GUIDE struct #define HRCR_INVALIDPNDT (-4) // invalid pendata #define HRCR_UNSUPPORTED (-5) // recognizer does not support feature #define HRCR_CONFLICT (-6) // training conflict #define HRCR_HOOKED (-8) // hookasaurus ate the result // system wordlist for AddWordsHWL: #define HWL_SYSTEM ((HWL)1) // magic value means system wordlist // inkset returns: #define ISR_ERROR (-1) // Memory or other error #define ISR_BADINKSET (-2) // bad source inkset #define ISR_BADINDEX (-3) // bad inkset index #ifndef IX_END #define IX_END 0xFFFF // to or past last available index #endif //!IX_END #define MAXHOTSPOT 8 // max number of hotspots possible // ProcessHRC time constants: #define PH_MAX 0xFFFFFFFFL // recognize rest of ink #define PH_DEFAULT 0xFFFFFFFEL // reasonable time #define PH_MIN 0xFFFFFFFDL // minimum time // ResultsHookHRC options: #define RHH_STD 0 // GetResultsHRC #define RHH_BOX 1 // GetBoxResultsHRC // SetWordlistCoercionHRC options: #define SCH_NONE 0 // turn off coercion #define SCH_ADVISE 1 // macro is hint only #define SCH_FORCE 2 // some result is forced from macro // Symbol Context Insert Modes #define SCIM_INSERT 0 // insert #define SCIM_OVERWRITE 1 // overwrite // SetResultsHookHREC options: #define SRH_HOOKALL (HREC)1 // hook all recognizers // SetInternationalHRC options: #define SSH_RD 1 // to right and down (English) #define SSH_RU 2 // to right and up #define SSH_LD 3 // to left and down (Hebrew) #define SSH_LU 4 // to left and up #define SSH_DL 5 // down and to the left (Chinese) #define SSH_DR 6 // down and to the right (Chinese) #define SSH_UL 7 // up and to the left #define SSH_UR 8 // up and to the right #define SIH_ALLANSICHAR 1 // use all ANSI // TrainHREC options: #define TH_QUERY 0 // query the user if conflict #define TH_FORCE 1 // ditto no query #define TH_SUGGEST 2 // abandon training if conflict // Return values for WCR_TRAIN Function #define TRAIN_NONE 0x0000 #define TRAIN_DEFAULT 0x0001 #define TRAIN_CUSTOM 0x0002 #define TRAIN_BOTH (TRAIN_DEFAULT | TRAIN_CUSTOM) // Control values for TRAINSAVE #define TRAIN_SAVE 0 // save changes that have been made #define TRAIN_REVERT 1 // discard changes that have been made #define TRAIN_RESET 2 // use factory settings // ConfigRecognizer and ConfigHREC options: #define WCR_RECOGNAME 0 // ConfigRecognizer 1.0 #define WCR_QUERY 1 #define WCR_CONFIGDIALOG 2 #define WCR_DEFAULT 3 #define WCR_RCCHANGE 4 #define WCR_VERSION 5 #define WCR_TRAIN 6 #define WCR_TRAINSAVE 7 #define WCR_TRAINMAX 8 #define WCR_TRAINDIRTY 9 #define WCR_TRAINCUSTOM 10 #define WCR_QUERYLANGUAGE 11 #define WCR_USERCHANGE 12 // ConfigHREC options: #define WCR_PWVERSION 13 // ver of PenWin recognizer supports #define WCR_GETALCPRIORITY 14 // get recognizer's ALC priority #define WCR_SETALCPRIORITY 15 // set recognizer's ALC priority #define WCR_GETANSISTATE 16 // get ALLANSICHAR state #define WCR_SETANSISTATE 17 // set ALLANSICHAR if T #define WCR_GETHAND 18 // get writing hand #define WCR_SETHAND 19 // set writing hand #define WCR_GETDIRECTION 20 // get writing direction #define WCR_SETDIRECTION 21 // set writing direction #define WCR_INITRECOGNIZER 22 // init recognizer and set user name #define WCR_CLOSERECOGNIZER 23 // close recognizer #define WCR_PRIVATE 1024 // sub-functions of WCR_USERCHANGE #define CRUC_NOTIFY 0 // user name change #define CRUC_REMOVE 1 // user name deleted // Word List Types: #define WLT_STRING 0 // one string #define WLT_STRINGTABLE 1 // array of strings #define WLT_EMPTY 2 // empty wordlist #define WLT_WORDLIST 3 // handle to a wordlist #endif /*!NOPENHRC */ //--------------------------------------------------------------------------- #ifndef NOPENIEDIT // IEdit Background Options #define IEB_DEFAULT 0 // default (use COLOR_WINDOW) #define IEB_BRUSH 1 // paint background with brush #define IEB_BIT_UL 2 // bitmap, upper-left aligned #define IEB_BIT_CENTER 3 // bitmap, centered in control #define IEB_BIT_TILE 4 // bitmap, tiled repeatedly in ctl #define IEB_BIT_STRETCH 5 // bitmap, stretched to fit ctl #define IEB_OWNERDRAW 6 // parent window will draw background // IEdit Drawing Options #define IEDO_NONE 0x0000 // no drawing #define IEDO_FAST 0x0001 // ink drawn as fast as possible (def) #define IEDO_SAVEUPSTROKES 0x0002 // save upstrokes #define IEDO_RESERVED 0xFFFC // reserved bits // IEdit Input Options #define IEI_MOVE 0x0001 // move ink into ctl #define IEI_RESIZE 0x0002 // resize ink to fit within ctl #define IEI_CROP 0x0004 // discard ink outside of ctl #define IEI_DISCARD 0x0008 // discard all ink if any outside ctl #define IEI_RESERVED 0xFFF0 // reserved // IEdit IE_GETINK options #define IEGI_ALL 0x0000 // get all ink from control #define IEGI_SELECTION 0x0001 // get selected ink from control // IEdit IE_SETMODE/IE_GETMODE (mode) options #define IEMODE_READY 0 // default inking, moving, sizing mode #define IEMODE_ERASE 1 // erasing Mode #define IEMODE_LASSO 2 // lasso selection mode // IEdit Notification Bits #define IEN_NULL 0x0000 // null notification #define IEN_PDEVENT 0x0001 // notify about pointing device events #define IEN_PAINT 0x0002 // send painting-related notifications #define IEN_FOCUS 0x0004 // send focus-related notifications #define IEN_SCROLL 0x0008 // send scrolling notifications #define IEN_EDIT 0x0010 // send editing/change notifications #define IEN_PROPERTIES 0x0020 // send properties dialog notification #define IEN_RESERVED 0xFF80 // reserved // IEdit Return Values #define IER_OK 0 // success #define IER_NO 0 // ctl cannot do request #define IER_YES 1 // ctl can do request #define IER_ERROR (-1) // unspecified error; operation failed #define IER_PARAMERR (-2) // bogus lParam value, bad handle, etc #define IER_OWNERDRAW (-3) // can't set drawopts in ownerdraw ctl #define IER_SECURITY (-4) // security protection disallows action #define IER_SELECTION (-5) // nothing selected in control #define IER_SCALE (-6) // merge: incompatible scaling factors #define IER_MEMERR (-7) // memory error #define IER_NOCOMMAND (-8) // tried IE_GETCOMMAND w/no command #define IER_NOGESTURE (-9) // tried IE_GETGESTURE w/no gesture #define IER_NOPDEVENT (-10) // tried IE_GETPDEVENT but no event #define IER_NOTINPAINT (-11) // tried IE_GETPAINTSTRUCT but no paint #define IER_PENDATA (-12) // can't do request with NULL hpd in ctl // IEdit Recognition Options #define IEREC_NONE 0x0000 // No recognition #define IEREC_GESTURE 0x0001 // Gesture recognition #define IEREC_ALL (IEREC_GESTURE) #define IEREC_RESERVED 0xFFFE // Reserved // IEdit Security Options #define IESEC_NOCOPY 0x0001 // copying disallowed #define IESEC_NOCUT 0x0002 // cutting disallowed #define IESEC_NOPASTE 0x0004 // pasting disallowed #define IESEC_NOUNDO 0x0008 // undoing disallowed #define IESEC_NOINK 0x0010 // inking disallowed #define IESEC_NOERASE 0x0020 // erasing disallowed #define IESEC_NOGET 0x0040 // IE_GETINK message verboten #define IESEC_NOSET 0x0080 // IE_SETINK message verboten #define IESEC_RESERVED 0xFF00 // reserved // IEdit IE_SETFORMAT/IE_GETFORMAT options #define IESF_ALL 0x0001 // set/get stk fmt of all ink #define IESF_SELECTION 0x0002 // set/get stk fmt of selected ink #define IESF_STROKE 0x0004 // set/get stk fmt of specified stroke // #define IESF_TIPCOLOR 0x0008 // set color #define IESF_TIPWIDTH 0x0010 // set width #define IESF_PENTIP (IESF_TIPCOLOR|IESF_TIPWIDTH) // // IEdit IE_SETINK options #define IESI_REPLACE 0x0000 // replace ink in control #define IESI_APPEND 0x0001 // append ink to existing control ink // Ink Edit Control (IEdit) definitions // IEdit Notifications #define IN_PDEVENT ((IEN_PDEVENT<<8)|0) // pointing device event occurred #define IN_ERASEBKGND ((IEN_NULL<<8)|1) // control needs bkgnd erased #define IN_PREPAINT ((IEN_PAINT<<8)|2) // before control paints its ink #define IN_PAINT ((IEN_NULL<<8)|3) // control needs to be painted #define IN_POSTPAINT ((IEN_PAINT<<8)|4) // after control has painted #define IN_MODECHANGED ((IEN_EDIT<<8)|5) // mode changed #define IN_CHANGE ((IEN_EDIT<<8)|6) // contents changed & painted #define IN_UPDATE ((IEN_EDIT<<8)|7) // contents changed & !painted #define IN_SETFOCUS ((IEN_FOCUS<<8)|8) // IEdit is getting focus #define IN_KILLFOCUS ((IEN_FOCUS<<8)|9) // IEdit is losing focus #define IN_MEMERR ((IEN_NULL<<8)|10) // memory error #define IN_HSCROLL ((IEN_SCROLL<<8)|11) // horz scrolled, not painted #define IN_VSCROLL ((IEN_SCROLL<<8)|12) // vert scrolled, not painted #define IN_GESTURE ((IEN_EDIT<<8)|13) // user has gestured on control #define IN_COMMAND ((IEN_EDIT<<8)|14) // command selected from menu #define IN_CLOSE ((IEN_NULL<<8)|15) // I-Edit is being closed #define IN_PROPERTIES ((IEN_PROPERTIES<<8)|16) // properties dialog #endif /*!NOPENIEDIT */ //--------------------------------------------------------------------------- #ifndef NOPENINKPUT // PenIn[k]put API constants // Default Processing #define LRET_DONE 1L #define LRET_ABORT (-1L) #define LRET_HRC (-2L) #define LRET_HPENDATA (-3L) #define LRET_PRIVATE (-4L) // Inkput: #define PCMR_OK 0 #define PCMR_ALREADYCOLLECTING (-1) #define PCMR_INVALIDCOLLECTION (-2) #define PCMR_EVENTLOCK (-3) #define PCMR_INVALID_PACKETID (-4) #define PCMR_TERMTIMEOUT (-5) #define PCMR_TERMRANGE (-6) #define PCMR_TERMPENUP (-7) #define PCMR_TERMEX (-8) #define PCMR_TERMBOUND (-9) #define PCMR_APPTERMINATED (-10) #define PCMR_TAP (-11) // alias PCMR_TAPNHOLD_LAST #define PCMR_SELECT (-12) // ret because of tap & hold #define PCMR_OVERFLOW (-13) #define PCMR_ERROR (-14) // parameter or unspecified error #define PCMR_DISPLAYERR (-15) // inking only #define PCMR_TERMINVERT (-16) // termination due to tapping opposite end of pen #define PII_INKCLIPRECT 0x0001 #define PII_INKSTOPRECT 0x0002 #define PII_INKCLIPRGN 0x0004 #define PII_INKSTOPRGN 0x0008 #define PII_INKPENTIP 0x0010 #define PII_SAVEBACKGROUND 0x0020 #define PII_CLIPSTOP 0x0040 #define PIT_RGNBOUND 0x0001 #define PIT_RGNEXCLUDE 0x0002 #define PIT_TIMEOUT 0x0004 #define PIT_TAPNHOLD 0x0008 #endif /*!NOPENINKPUT */ //--------------------------------------------------------------------------- #ifndef NOPENMISC // Misc RC Definitions: #define CL_NULL 0 #define CL_MINIMUM 1 // minimum confidence level #define CL_MAXIMUM 100 // max (require perfect recog) #define cwRcReservedMax 8 // rc.rgwReserved[cwRcReservedMax] #define ENUM_MINIMUM 1 #define ENUM_MAXIMUM 4096 #define HKP_SETHOOK 0 // SetRecogHook() #define HKP_UNHOOK 0xFFFF #define HWR_RESULTS 0 #define HWR_APPWIDE 1 #define iSycNull (-1) #define LPDFNULL ((LPDF)NULL) #define MAXDICTIONARIES 16 // rc.rglpdf[MAXDICTIONARIES] #define wPntAll (UINT)0xFFFF #define cbRcLanguageMax 44 // rc.lpLanguage[cbRcLanguageMax] #define cbRcUserMax 32 // rc.lpUser[cbRcUserMax] #define cbRcrgbfAlcMax 32 // rc.rgbfAlc[cbRcrgbfAlcMax] #define RC_WDEFAULT 0xffff #define RC_LDEFAULT 0xffffffffL #define RC_WDEFAULTFLAGS 0x8000 #define RC_LDEFAULTFLAGS 0x80000000L // CorrectWriting() API constants: // LOWORD values: #define CWR_REPLACECR 0x0001 // replace carriage ret (\r) with space #define CWR_STRIPCR CWR_REPLACECR // alias for backward compatibility #define CWR_STRIPLF 0x0002 // strip linefeed (\n) #define CWR_REPLACETAB 0x0004 // replace tab with space (\t) #define CWR_STRIPTAB CWR_REPLACETAB // alias for backward compatibility #define CWR_SINGLELINEEDIT (CWR_REPLACECR|CWR_STRIPLF|CWR_REPLACETAB) // all of the above #define CWR_INSERT 0x0008 // use "Insert Text" instead of "Edit Text" in the title #define CWR_TITLE 0x0010 // interpret dwParam as title string #define CWR_SIMPLE 0x0040 // simple dialog (lens) #define CWR_HEDIT 0x0080 // HEDIT CorrectWriting #define CWR_KEYBOARD 0x0100 // keyboard lens #define CWR_BOXES 0x0200 // bedit lens // HIWORD values: keyboard types #define CWRK_DEFAULT 0 // default keyboard type #define CWRK_BASIC 1 // basic keyboard #define CWRK_FULL 2 // full keyboard #define CWRK_NUMPAD 3 // numeric keyboard #define CWRK_TELPAD 4 // Telephone type keyboard #ifdef JAPAN // CorrectWritingEx constants: #define CBCAPTIONCWX 256 // size of caption buffer #define CKBCWX 6 // number of keyboards #define XCWX 20 // default position and size #define YCWX 20 #define CXCWX 300 #define CYCWX 200 // CorrectWritingEx flags: #define CWX_TOPMOST 0x00000001L #define CWX_NOTOOLTIPS 0x00000002L #define CWX_EPERIOD 0x00000004L #define CWX_ECOMMA 0x00000008L #define CWX_DEFAULT 0x00000000L // CorrectWritingEx apply flags - if these bits are set, corresp field used: #define CWXA_CONTEXT 0x0001 // use cwx.dwFlags #define CWXA_KBD 0x0002 // use cwx.ixkb #define CWXA_STATE 0x0004 // use cwx.rgState[] #define CWXA_PTUL 0x0008 // use cwx.ptUL #define CWXA_SIZE 0x0010 // use cwx.sizeHW #define CWXA_NOUPDATEMRU 0x0020 // do not update Most Recently Used // CorrectWritingEx keyboards: #define CWXK_HW 0 // handwriting input #define CWXK_FIRST 0x0100 // First keyboard, for ordinality #define CWXK_50 0x0100 // 50-On kbd #define CWXK_QWERTY 0x0101 // QWERTY kbd #define CWXK_NUM 0x0102 // Tel/Num kbd #define CWXK_KANJI 0x0103 // Kanji kbd #define CWXK_CODE 0x0104 // Code finder kbd #define CWXK_YOMI 0x0105 // Yomi ("reading") kbd // CorrectWritingEx keyboard states: #define CWXKS_DEFAULT 0xffff // use existing kbd state #define CWXKS_ZEN 0 #define CWXKS_HAN 1 #define CWXKS_ROMAZEN 2 #define CWXKS_ROMAHAN 3 #define CWXKS_HIRAZEN 4 #define CWXKS_KATAZEN 5 #define CWXKS_KATAHAN 6 // CorrectWritingEx returns: #define CWXR_ERROR -1 // error return #define CWXR_UNMODIFIED 0 // user pressed cancel button or no change #define CWXR_MODIFIED 1 // user pressed changed text and OK button #endif //JAPAN #ifdef JAPAN #define GPMI_OK 0L #define GPMI_INVALIDPMI 0x8000L #endif // JAPAN // inkwidth limits #define INKWIDTH_MINIMUM 0 // 0 invisible, 1..15 pixel widths #define INKWIDTH_MAXIMUM 15 // max width in pixels // Get/SetPenMiscInfo: // PMI_RCCHANGE is for WM_GLOBALRCCHANGE compatability only: #define PMI_RCCHANGE 0 // invalid for Get/SetPenMiscInfo #define PMI_BEDIT 1 // boxed edit info #ifdef JAPAN #endif //JAPAN #define PMI_CXTABLET 3 // tablet width #define PMI_CYTABLET 4 // tablet height #define PMI_PENTIP 6 // pen tip: color, width, nib #define PMI_ENABLEFLAGS 7 // PWE_xx enablements #define PMI_TIMEOUT 8 // handwriting timeout #define PMI_TIMEOUTGEST 9 // gesture timeout #define PMI_TIMEOUTSEL 10 // select (press&hold) timeout #define PMI_SYSFLAGS 11 // component load configuration #define PMI_INDEXFROMRGB 12 // color table index from RGB #define PMI_RGBFROMINDEX 13 // RGB from color table index #define PMI_SYSREC 14 // handle to system recognizer #define PMI_TICKREF 15 // reference absolute time #define PMI_SAVE 0x1000 // save setting to file #ifdef JAPAN // GetPenResource options: #define GPR_CURSPEN 1 // standard pen cursor #define GPR_CURSCOPY 2 // copy cursor #define GPR_CURSUNKNOWN 3 // unknown cursor #define GPR_CURSERASE 4 // erase cursor #define GPR_BMCRMONO 5 // monochrome Return bitmap #define GPR_BMLFMONO 6 // monochrome LineFeed bitmap #define GPR_BMTABMONO 7 // monochrome Tab bitmap #define GPR_BMDELETE 8 // delete bitmap #define GPR_BMLENSBTN 9 // lens buttonface bitmap #ifdef JAPAN #define GPR_BMHSPMONO 10 // hankaku space bitmap #define GPR_BMZSPMONO 11 // zenkaku space bitmap #endif //JAPAN #endif //JAPAN // Set/GetPenMiscInfo/PMI_ENABLEFLAGS flags: #define PWE_AUTOWRITE 0x0001 // pen functionality where IBeam #define PWE_ACTIONHANDLES 0x0002 // action handles in controls #define PWE_INPUTCURSOR 0x0004 // show cursor while writing #define PWE_LENS 0x0008 // allow lens popup // GetPenMiscInfo/PMI_SYSFLAGS flags: #define PWF_RC1 0x0001 // Windows for Pen 1.0 RC support #define PWF_PEN 0x0004 // pen drv loaded & hdwe init'd #define PWF_INKDISPLAY 0x0008 // ink-compatible display drv loaded #define PWF_RECOGNIZER 0x0010 // system recognizer installed #define PWF_BEDIT 0x0100 // boxed edit support #define PWF_HEDIT 0x0200 // free input edit support #define PWF_IEDIT 0x0400 // ink edit support #define PWF_ENHANCED 0x1000 // enh features (gest, 1ms timing) #define PWF_FULL\ PWF_RC1|PWF_PEN|PWF_INKDISPLAY|PWF_RECOGNIZER|\ PWF_BEDIT|PWF_HEDIT |PWF_IEDIT|PWF_ENHANCED // SetPenAppFlags() / RegisterPenApp() API constants: #define RPA_DEFAULT 0x0001 // == RPA_HEDIT #define RPA_HEDIT 0x0001 // convert EDIT to HEDIT #define RPA_KANJIFIXEDBEDIT 0x0002 #define RPA_DBCSPRIORITY 0x0004 // assume DBCS has priority (Japan) #define RPA_SBCSPRIORITY 0x0008 // assume SBCS has priority (Japan) #define PMIR_OK 0L #define PMIR_INDEX (-1L) #define PMIR_VALUE (-2L) #define PMIR_INVALIDBOXEDITINFO (-3L) #define PMIR_INIERROR (-4L) #define PMIR_ERROR (-5L) #define PMIR_NA (-6L) #ifdef JAPAN #define SPMI_OK 0L #define SPMI_INVALIDBOXEDITINFO 1L #define SPMI_INIERROR 2L #define SPMI_INVALIDPMI 0x8000L #endif //JAPAN #endif /*!NOPENMISC */ //--------------------------------------------------------------------------- #ifndef NOPENRC1 // not available in WIN32 // RC Options and Flags: // GetGlobalRC() API return codes: #define GGRC_OK 0 // no err #define GGRC_DICTBUFTOOSMALL 1 // lpDefDict buffer too small for path #define GGRC_PARAMERROR 2 // invalid params: call ignored #define GGRC_NA 3 // function not available // RC Direction: #define RCD_DEFAULT 0 // def none #define RCD_LR 1 // left to right like English #define RCD_RL 2 // right to left like Arabic #define RCD_TB 3 // top to bottom like Japanese #define RCD_BT 4 // bottom to top like some Chinese // RC International Preferences: #define RCIP_ALLANSICHAR 0x0001 // all ANSI chars #define RCIP_MASK 0x0001 // RC Options: #define RCO_NOPOINTEREVENT 0x00000001L // no recog tap, tap/hold #define RCO_SAVEALLDATA 0x00000002L // save pen data like upstrokes #define RCO_SAVEHPENDATA 0x00000004L // save pen data for app #define RCO_NOFLASHUNKNOWN 0x00000008L // no ? cursor on unknown #define RCO_TABLETCOORD 0x00000010L // tablet coords used in RC #define RCO_NOSPACEBREAK 0x00000020L // no space break recog -> dict #define RCO_NOHIDECURSOR 0x00000040L // display cursor during inking #define RCO_NOHOOK 0x00000080L // disallow ink hook (passwords) #define RCO_BOXED 0x00000100L // valid rc.guide provided #define RCO_SUGGEST 0x00000200L // for dict suggest #define RCO_DISABLEGESMAP 0x00000400L // disable gesture mapping #define RCO_NOFLASHCURSOR 0x00000800L // no cursor feedback #define RCO_BOXCROSS 0x00001000L // show + at boxedit center #define RCO_COLDRECOG 0x00008000L // result is from cold recog #define RCO_SAVEBACKGROUND 0x00010000L // Save background from ink #define RCO_DODEFAULT 0x00020000L // do default gesture processing // RC Orientation of Tablet: #define RCOR_NORMAL 1 // tablet not rotated #define RCOR_RIGHT 2 // rotated 90 deg anticlockwise #define RCOR_UPSIDEDOWN 3 // rotated 180 deg #define RCOR_LEFT 4 // rotated 90 deg clockwise // RC Preferences: #define RCP_LEFTHAND 0x0001 // left handed input #define RCP_MAPCHAR 0x0004 // fill in syg.lpsyc (ink) for training // RCRESULT wResultsType values: #define RCRT_DEFAULT 0x0000 // normal ret #define RCRT_UNIDENTIFIED 0x0001 // result contains unidentified results #define RCRT_GESTURE 0x0002 // result is a gesture #define RCRT_NOSYMBOLMATCH 0x0004 // nothing recognized (no ink match) #define RCRT_PRIVATE 0x4000 // recognizer-specific symbol #define RCRT_NORECOG 0x8000 // no recog attempted, only data ret #define RCRT_ALREADYPROCESSED 0x0008 // GestMgr hooked it #define RCRT_GESTURETRANSLATED 0x0010 // GestMgr translated it to ANSI value #define RCRT_GESTURETOKEYS 0x0020 // ditto to set of virtual keys // RC Result Return Mode specification: #define RRM_STROKE 0 // return results after each stroke #define RRM_SYMBOL 1 // per symbol (e.g. boxed edits) #define RRM_WORD 2 // on recog of a word #define RRM_NEWLINE 3 // on recog of a line break #define RRM_COMPLETE 16 // on PCM_xx specified completion // SetGlobalRC() API return code flags: #define SGRC_OK 0x0000 // no err #define SGRC_USER 0x0001 // invalid User name #define SGRC_PARAMERROR 0x0002 // param error: call ignored #define SGRC_RC 0x0004 // supplied RC has errors #define SGRC_RECOGNIZER 0x0008 // DefRecog name invalid #define SGRC_DICTIONARY 0x0010 // lpDefDict path invalid #define SGRC_INIFILE 0x0020 // error saving to penwin.ini #define SGRC_NA 0x8000 // function not available #endif /*!NOPENRC1 */ //--------------------------------------------------------------------------- #ifndef NOPENTARGET #define TPT_CLOSEST 0x0001 // Assign to the closest target #define TPT_INTERSECTINK 0x0002 // target with intersecting ink #define TPT_TEXTUAL 0x0004 // apply textual heuristics #define TPT_DEFAULT (TPT_TEXTUAL | TPT_INTERSECTINK | TPT_CLOSEST) #endif /*!NOPENTARGET */ //--------------------------------------------------------------------------- #ifndef NOPENVIRTEVENT // Virtual Event Layer: #define VWM_MOUSEMOVE 0x0001 #define VWM_MOUSELEFTDOWN 0x0002 #define VWM_MOUSELEFTUP 0x0004 #define VWM_MOUSERIGHTDOWN 0x0008 #define VWM_MOUSERIGHTUP 0x0010 #endif /*!NOPENVIRTEVENT */ #endif /* RC_INVOKED */ // ... all the way back from definitions:2 /****** Messages and Defines ************************************************/ // Windows Messages WM_PENWINFIRST (0x0380) and WM_PENWINLAST (0x038F) // are defined in WINDOWS.H and WINMIN.H //--------------------------------------------------------------------------- #ifndef NOPENMSGS #ifndef NOPENRC1 // not available in WIN32 #define WM_RCRESULT (WM_PENWINFIRST+1) // 0x381 #define WM_HOOKRCRESULT (WM_PENWINFIRST+2) // 0x382 #endif /*!NOPENRC1*/ #define WM_PENMISCINFO (WM_PENWINFIRST+3) // 0x383 #define WM_GLOBALRCCHANGE (WM_PENWINFIRST+3) // alias #ifndef NOPENAPPS // not available in WIN32 #define WM_SKB (WM_PENWINFIRST+4) // 0x384 #endif /*!NOPENAPPS */ #define WM_PENCTL (WM_PENWINFIRST+5) // 0x385 #define WM_HEDITCTL (WM_PENWINFIRST+5) // FBC: alias // WM_HEDITCTL (WM_PENCTL) wParam options: #ifndef _WIN32 #define HE_GETRC 3 // FBC: get RC from HEDIT/BEDIT control #define HE_SETRC 4 // FBC: ditto set #define HE_GETINFLATE 5 // FBC: get inflate rect #define HE_SETINFLATE 6 // FBC: ditto set #endif //!_WIN32 #define HE_GETUNDERLINE 7 // get underline mode #define HE_SETUNDERLINE 8 // ditto set #define HE_GETINKHANDLE 9 // get handle to captured ink #define HE_SETINKMODE 10 // begin HEDIT cold recog mode #define HE_STOPINKMODE 11 // end cold recog mode #ifndef _WIN32 #define HE_GETRCRESULTCODE 12 // FBC: result of recog after HN_ENDREC #endif //!_WIN32 #define HE_DEFAULTFONT 13 // switch BEDIT to def font #define HE_CHARPOSITION 14 // BEDIT byte offset -> char position #define HE_CHAROFFSET 15 // BEDIT char position -> byte offset #define HE_GETBOXLAYOUT 20 // get BEDIT layout #define HE_SETBOXLAYOUT 21 // ditto set #ifndef _WIN32 #define HE_GETRCRESULT 22 // FBC: get RCRESULT after HN_RCRESULT #endif //!_WIN32 #ifdef JAPAN #define HE_KKCONVERT 30 // JPN start kana-kanji conversion #define HE_GETKKCONVERT 31 // JPN get KK state #define HE_CANCELKKCONVERT 32 // JPN cancel KK conversion #define HE_FIXKKCONVERT 33 // JPN force KK result #define HE_GETKKSTATUS 34 // JPN get KK UI state #define HE_SETCONVERTRANGE 35 // JPN set a range of DCS #define HE_GETCONVERTRANGE 36 // JPN get a range of DCS #define HE_PUTCONVERTCHAR 37 // JPN put a char of DCS #endif //JAPAN #define HE_ENABLEALTLIST 40 // en/disable dropdown recog alt's #define HE_SHOWALTLIST 41 // show dropdown (assume enabled) #define HE_HIDEALTLIST 42 // hide dropdown alternatives #ifndef JAPAN #define HE_GETLENSTYPE 43 // get lens type: CWR_ and CWRK_ flags #define HE_SETLENSTYPE 44 // set lens type: CWR_ and CWRK_ flags #endif //!JAPAN #ifdef JAPAN //------------------------------ // JPN Kana-to-Kanji conversion subfunctions: #define HEKK_DEFAULT 0 // def #define HEKK_CONVERT 1 // convert in place #define HEKK_CANDIDATE 2 // start conversion dialog #define HEKK_DBCSCHAR 3 // convert to DBCS #define HEKK_SBCSCHAR 4 // convert to SBCS #define HEKK_HIRAGANA 5 // convert to hiragana #define HEKK_KATAKANA 6 // convert to katakana //------------------------------ // JPN Return value of HE_GETKKSTATUS #define HEKKR_NOCONVERT 0 // in no conversion mode #define HEKKR_PRECONVERT 1 // in pre conversion mode #define HEKKR_CONVERT 2 // in mid conversion mode #endif //JAPAN // HE_STOPINKMODE (stop cold recog) options: #define HEP_NORECOG 0 // don't recog ink #define HEP_RECOG 1 // recog ink #define HEP_WAITFORTAP 2 // recog after tap in window // WM_PENCTL notifications: #define HN_ENDREC 4 // recog complete #define HN_DELAYEDRECOGFAIL 5 // HE_STOPINKMODE (cold recog) failed #define HN_RESULT 20 // HEDIT/BEDIT has received new ink/recognition result #ifndef _WIN32 #define HN_RCRESULT HN_RESULT #endif //!_WIN32 #ifdef JAPAN #define HN_ENDKKCONVERT 30 // JPN KK conversion complete #endif //JAPAN #define HN_BEGINDIALOG 40 // Lens/EditText/garbage detection dialog // is about to come up on this hedit/bedit #define HN_ENDDIALOG 41 // Lens/EditText/garbage detection dialog // has just been destroyed //------------------------------ #ifndef NOPENIEDIT // Messages common with other controls: #define IE_GETMODIFY (EM_GETMODIFY) // gets the mod'n (dirty) bit #define IE_SETMODIFY (EM_SETMODIFY) // sets the mod'n (dirty) bit #define IE_CANUNDO (EM_CANUNDO) // queries whether can undo #define IE_UNDO (EM_UNDO) // undo #define IE_EMPTYUNDOBUFFER (EM_EMPTYUNDOBUFFER) // clears IEDIT undo buffer #define IE_MSGFIRST (WM_USER+150) // 0x496 == 1174 // IEdit common messages: #define IE_GETINK (IE_MSGFIRST+0) // gets ink from the control #define IE_SETINK (IE_MSGFIRST+1) // sets ink into the control #define IE_GETPENTIP (IE_MSGFIRST+2) // gets the cur def ink pentip #define IE_SETPENTIP (IE_MSGFIRST+3) // sets the cur def ink pentip #define IE_GETERASERTIP (IE_MSGFIRST+4) // gets the cur eraser pentip #define IE_SETERASERTIP (IE_MSGFIRST+5) // sets the cur eraser pentip #define IE_GETBKGND (IE_MSGFIRST+6) // gets the bkgnd options #define IE_SETBKGND (IE_MSGFIRST+7) // sets the bkgnd options #define IE_GETGRIDORIGIN (IE_MSGFIRST+8) // gets the bkgnd grid origin #define IE_SETGRIDORIGIN (IE_MSGFIRST+9) // sets the bkgnd grid origin #define IE_GETGRIDPEN (IE_MSGFIRST+10) // gets the bkgnd grid pen #define IE_SETGRIDPEN (IE_MSGFIRST+11) // sets the bkgnd grid pen #define IE_GETGRIDSIZE (IE_MSGFIRST+12) // gets the bkgnd grid size #define IE_SETGRIDSIZE (IE_MSGFIRST+13) // sets the bkgnd grid size #define IE_GETMODE (IE_MSGFIRST+14) // gets the current pen mode #define IE_SETMODE (IE_MSGFIRST+15) // sets the current pen mode #define IE_GETINKRECT (IE_MSGFIRST+16) // gets the rectbound of the ink // IEdit-specific messages: #define IE_GETAPPDATA (IE_MSGFIRST+34) // gets the user-defined datum #define IE_SETAPPDATA (IE_MSGFIRST+35) // sets the user-defined data #define IE_GETDRAWOPTS (IE_MSGFIRST+36) // gets the ink draw options #define IE_SETDRAWOPTS (IE_MSGFIRST+37) // sets the ink options #define IE_GETFORMAT (IE_MSGFIRST+38) // gets format of stroke(s) #define IE_SETFORMAT (IE_MSGFIRST+39) // sets format of stroke(s) #define IE_GETINKINPUT (IE_MSGFIRST+40) // gets the ink input option #define IE_SETINKINPUT (IE_MSGFIRST+41) // sets the ink input option #define IE_GETNOTIFY (IE_MSGFIRST+42) // gets the notification bits #define IE_SETNOTIFY (IE_MSGFIRST+43) // sets the notification bits #define IE_GETRECOG (IE_MSGFIRST+44) // gets recognition options #define IE_SETRECOG (IE_MSGFIRST+45) // sets recognition options #define IE_GETSECURITY (IE_MSGFIRST+46) // gets the security options #define IE_SETSECURITY (IE_MSGFIRST+47) // sets the security options #define IE_GETSEL (IE_MSGFIRST+48) // gets sel status of a stroke #define IE_SETSEL (IE_MSGFIRST+49) // sets sel status of a stroke #define IE_DOCOMMAND (IE_MSGFIRST+50) // send command to IEdit #define IE_GETCOMMAND (IE_MSGFIRST+51) // gets user command #define IE_GETCOUNT (IE_MSGFIRST+52) // gets count of strks in I-Edit #define IE_GETGESTURE (IE_MSGFIRST+53) // gets details on user gesture #define IE_GETMENU (IE_MSGFIRST+54) // gets handle to pop-up menu #define IE_GETPAINTDC (IE_MSGFIRST+55) // gets the HDC for painting #define IE_GETPDEVENT (IE_MSGFIRST+56) // gets details of last pd event #define IE_GETSELCOUNT (IE_MSGFIRST+57) // gets count of selected strks #define IE_GETSELITEMS (IE_MSGFIRST+58) // gets indices of all sel strks #define IE_GETSTYLE (IE_MSGFIRST+59) // gets IEdit control styles #endif /*!NOPENIEDIT */ //------------------------------ #ifndef NOPENHEDIT // (H)Edit Control: // CTLINITHEDIT.dwFlags values #define CIH_NOGDMSG 0x0001 // disable garbage detection message box for this edit #define CIH_NOACTIONHANDLE 0x0002 // disable action handles for this edit #define CIH_NOEDITTEXT 0x0004 // disable Lens/Edit/Insert text for this edit #define CIH_NOFLASHCURSOR 0x0008 // don't flash cursor on tap-n-hold in this (h)edit #endif /* !NOPENHEDIT */ //------------------------------ #ifndef NOPENBEDIT // Boxed Edit Control: // box edit alternative list: #define HEAL_DEFAULT -1L // AltList def value for lParam // box edit Info: #define BEI_FACESIZE 32 // max size of font name, = LF_FACESIZE #define BEIF_BOXCROSS 0x0001 // box edit size: #define BESC_DEFAULT 0 #define BESC_ROMANFIXED 1 #define BESC_KANJIFIXED 2 #define BESC_USERDEFINED 3 // CTLINITBEDIT.wFlags values #define CIB_NOGDMSG 0x0001 // disable garbage detection message box for this bedit #define CIB_NOACTIONHANDLE 0x0002 // disable action handles for this bedit #define CIB_NOFLASHCURSOR 0x0004 // don't flash cursor on tap-n-hold in this bedit #ifdef JAPAN #define CIB_NOWRITING 0x0010 // disallow pen input into control #endif // JAPAN #define BXD_CELLWIDTH 12 #define BXD_CELLHEIGHT 16 #define BXD_BASEHEIGHT 13 #define BXD_BASEHORZ 0 #define BXD_MIDFROMBASE 0 #define BXD_CUSPHEIGHT 2 #define BXD_ENDCUSPHEIGHT 4 #define BXDK_CELLWIDTH 32 #define BXDK_CELLHEIGHT 32 #define BXDK_BASEHEIGHT 28 #define BXDK_BASEHORZ 0 #define BXDK_MIDFROMBASE 0 #define BXDK_CUSPHEIGHT 28 #define BXDK_ENDCUSPHEIGHT 10 #endif /*!NOPENBEDIT */ #define WM_PENMISC (WM_PENWINFIRST+6) // 0x386 // WM_PENMISC message constants: #define PMSC_BEDITCHANGE 1 // broadcast when BEDIT changes #ifndef _WIN32 //#define PMSC_PENUICHANGE 2 // JPN broadcast when PENUI changes //#define PMSC_SUBINPCHANGE 3 // JPN broadcast when SUBINPUT changes //#define PMSC_KKCTLENABLE 4 // JPN #endif //!_WIN32 #define PMSC_GETPCMINFO 5 // query the window's PCMINFO #define PMSC_SETPCMINFO 6 // set the window's PCMINFO #define PMSC_GETINKINGINFO 7 // query the window's INKINGINFO #define PMSC_SETINKINGINFO 8 // set the window's INKINGINFO #define PMSC_GETHRC 9 // query the window's HRC #define PMSC_SETHRC 10 // set the window's HRC #define PMSC_GETSYMBOLCOUNT 11 // count of symbols in result recd by window #define PMSC_GETSYMBOLS 12 // ditto symbols #define PMSC_SETSYMBOLS 13 // ditto set symbols #define PMSC_LOADPW 15 // broadcast load state on penwin #define PMSC_INKSTOP 16 // PMSCL_xx lParam values for PMSC_LOADPW: #define PMSCL_UNLOADED 0L // penwin just unloaded #define PMSCL_LOADED 1L // penwin just loaded #define PMSCL_UNLOADING 2L // penwin about to unload #define WM_CTLINIT (WM_PENWINFIRST+7) // 0x387 // WM_CTLINIT message constants: #define CTLINIT_HEDIT 1 #define CTLINIT_BEDIT 7 #define CTLINIT_IEDIT 9 #define CTLINIT_MAX 10 #define WM_PENEVENT (WM_PENWINFIRST+8) // 0x388 // WM_PENEVENT message values for wParam: #define PE_PENDOWN 1 // pen tip down #define PE_PENUP 2 // pen tip went from down to up #define PE_PENMOVE 3 // pen moved without a tip transition #define PE_TERMINATING 4 // Peninput about to terminate #define PE_TERMINATED 5 // Peninput terminated #define PE_BUFFERWARNING 6 // Buffer half full. #define PE_BEGININPUT 7 // begin default input #define PE_SETTARGETS 8 // set target data structure (TARGINFO) #define PE_BEGINDATA 9 // init message to all targets #define PE_MOREDATA 10 // target gets more data #define PE_ENDDATA 11 // termination message to all targets #define PE_GETPCMINFO 12 // get input collection info #define PE_GETINKINGINFO 13 // get inking info #define PE_ENDINPUT 14 // Input termination message to window // starting default input #define PE_RESULT 15 // sent after ProcessHRC but before GetResultsHRC #endif /*!NOPENMSGS */ /****** Definitions 3: RC compiler excluded ********************************/ #ifndef RC_INVOKED // ... rest of file of no interest to rc compiler ////////////////////////////////////////////////////////////////////////////// /****** Macros **************************************************************/ // misc macros: //--------------------------------------------------------------------------- #ifndef NOPENDRIVER #define FPenUpX(x) ((BOOL)(((x) & BITPENUP) != 0)) #define GetWEventRef() (LOWORD(GetMessageExtraInfo())) #endif /*!NOPENDRIVER */ //--------------------------------------------------------------------------- #ifndef NOPENALC // ALC macros: #define MpAlcB(lprc,i) ((lprc)->rgbfAlc[((i) & 0xff) >> 3]) #define MpIbf(i) ((BYTE)(1 << ((i) & 7))) #define SetAlcBitAnsi(lprc,i) do {MpAlcB(lprc,i) |= MpIbf(i);} while (0) #define ResetAlcBitAnsi(lprc,i) do {MpAlcB(lprc,i) &= ~MpIbf(i);} while (0) #define IsAlcBitAnsi(lprc, i) ((MpAlcB(lprc,i) & MpIbf(i)) != 0) #endif /*!NOPENALC */ //--------------------------------------------------------------------------- #ifndef NOPENDATA // draw 2.0 pendata using internal stroke formats: #define DrawPenDataFmt(hdc, lprect, hpndt)\ DrawPenDataEx(hdc, lprect, hpndt, 0, IX_END, 0, IX_END, NULL, NULL, 0) #endif /*!NOPENDATA */ //--------------------------------------------------------------------------- #ifndef NOPENHRC // Handwriting Recognizer: // Intervals: // difference of two absolute times (at2 > at1 for positive result): #define dwDiffAT(at1, at2)\ (1000L*((at2).sec - (at1).sec) - (DWORD)(at1).ms + (DWORD)(at2).ms) // comparison of two absolute times (TRUE if at1 < at2): #define FLTAbsTime(at1, at2)\ ((at1).sec < (at2).sec || ((at1).sec == (at2).sec && (at1).ms < (at2).ms)) #define FLTEAbsTime(at1, at2)\ ((at1).sec < (at2).sec || ((at1).sec == (at2).sec && (at1).ms <= (at2).ms)) #define FEQAbsTime(at1, at2)\ ((at1).sec == (at2).sec && (at1).ms == (at2).ms) // test if abstime is within an interval: #define FAbsTimeInInterval(at, lpi)\ (FLTEAbsTime((lpi)->atBegin, at) && FLTEAbsTime(at, (lpi)->atEnd)) // test if interval (lpiT) is within an another interval (lpiS): #define FIntervalInInterval(lpiT, lpiS)\ (FLTEAbsTime((lpiS)->atBegin, (lpiT)->atBegin)\ && FLTEAbsTime((lpiT)->atEnd, (lpiS)->atEnd)) // test if interval (lpiT) intersects another interval (lpiS): #define FIntervalXInterval(lpiT, lpiS)\ (!(FLTAbsTime((lpiT)->atEnd, (lpiS)->atBegin)\ || FLTAbsTime((lpiS)->atEnd, (lpiT)->atBegin))) // duration of an LPINTERVAL in ms: #define dwDurInterval(lpi) dwDiffAT((lpi)->atBegin, (lpi)->atEnd) // fill a pointer to an ABSTIME structure from a count of seconds and ms: #define MakeAbsTime(lpat, sec, ms) do {\ (lpat)->sec = sec + ((ms) / 1000);\ (lpat)->ms = (ms) % 1000;\ } while (0) // SYV macros: #define FIsSpecial(syv) (HIWORD((syv))==SYVHI_SPECIAL) #define FIsAnsi(syv) (HIWORD((syv))==SYVHI_ANSI) #define FIsGesture(syv) (HIWORD((syv))==SYVHI_GESTURE) #define FIsKanji(syv) (HIWORD((syv))==SYVHI_KANJI) #define FIsShape(syv) (HIWORD((syv))==SYVHI_SHAPE) #define FIsUniCode(syv) (HIWORD((syv))==SYVHI_UNICODE) #define FIsVKey(syv) (HIWORD((syv))==SYVHI_VKEY) #define ChSyvToAnsi(syv) ((BYTE) (LOBYTE(LOWORD((syv))))) #define WSyvToKanji(syv) ((WORD) (LOWORD((syv)))) #define SyvCharacterToSymbol(c) ((LONG)(unsigned char)(c) | 0x00010000) #define SyvKanjiToSymbol(c) ((LONG)(UINT)(c) | 0x00030000) #define FIsSelectGesture(syv) \ ((syv) >= SYVSELECTFIRST && (syv) <= SYVSELECTLAST) #define FIsStdGesture(syv) \ ( \ FIsSelectGesture(syv) \ || (syv)==SYV_CLEAR \ || (syv)==SYV_HELP \ || (syv)==SYV_EXTENDSELECT \ || (syv)==SYV_UNDO \ || (syv)==SYV_COPY \ || (syv)==SYV_CUT \ || (syv)==SYV_PASTE \ || (syv)==SYV_CLEARWORD \ || (syv)==SYV_KKCONVERT \ || (syv)==SYV_USER \ || (syv)==SYV_CORRECT \ ) #define FIsAnsiGesture(syv) \ ( \ (syv) == SYV_BACKSPACE \ || (syv) == SYV_TAB \ || (syv) == SYV_RETURN \ || (syv) == SYV_SPACE \ ) #endif /*!NOPENHRC */ //--------------------------------------------------------------------------- #ifndef NOPENINKPUT #define SubPenMsgFromWpLp(wp, lp) (LOWORD(wp)) #ifdef _WIN32 #define EventRefFromWpLp(wp, lp) (HIWORD(wp)) #define TerminationFromWpLp(wp, lp) ((int)HIWORD(wp)) #define HpcmFromWpLp(wp, lp) ((HPCM)(lp)) #else #define EventRefFromWpLp(wp, lp) (LOWORD(lp)) #define TerminationFromWpLp(wp, lp) ((int)LOWORD(lp)) #define HpcmFromWpLp(wp, lp) ((HPCM)HIWORD(lp)) #endif //_WIN32 #endif /*!NOPENINKPUT*/ //--------------------------------------------------------------------------- #ifndef NOPENTARGET #define HwndFromHtrg(htrg) ((HWND)(DWORD)(htrg)) #define HtrgFromHwnd(hwnd) ((HTRG)(UINT)(hwnd)) #endif /*!NOPENTARGET*/ ////////////////////////////////////////////////////////////////////////////// /****** Typedefs ************************************************************/ // Simple: typedef LONG ALC; // Enabled Alphabet typedef int CL; // Confidence Level typedef UINT HKP; // Hook Parameter typedef int REC; // recognition result typedef LONG SYV; // Symbol Value #ifndef DECLARE_HANDLE32 #define DECLARE_HANDLE32(name)\ struct name##__ { int unused; };\ typedef const struct name##__ FAR* name #endif //!DECLARE_HANDLE32 DECLARE_HANDLE32(HTRG); // Handle to target DECLARE_HANDLE(HPCM); // Handle to Pen Collection Info DECLARE_HANDLE(HPENDATA); // handle to ink DECLARE_HANDLE(HREC); // handle to recognizer // Pointer Types: typedef ALC FAR* LPALC; // ptr to ALC typedef LPVOID LPOEM; // alias typedef SYV FAR* LPSYV; // ptr to SYV typedef HPENDATA FAR* LPHPENDATA; // ptr to HPENDATA // Function Prototypes: typedef int (CALLBACK *ENUMPROC)(LPSYV, int, VOID FAR*); typedef int (CALLBACK *LPDF)(int, LPVOID, LPVOID, int, DWORD, DWORD); typedef BOOL (CALLBACK *RCYIELDPROC)(VOID); // Structures: typedef struct tagABSTIME // 2.0 absolute date/time { DWORD sec; // number of seconds since 1/1/1970, ret by CRTlib time() fn UINT ms; // additional offset in ms, 0..999 } ABSTIME, FAR *LPABSTIME; //--------------------------------------------------------------------------- #ifndef NOPENHEDIT typedef struct tagCTLINITHEDIT // 2.0 init struct for (h)edit { DWORD cbSize; // sizeof(CTLINITHEDIT) HWND hwnd; // (h)edit window handle int id; // its id DWORD dwFlags; // CIE_xx DWORD dwReserved; // for future use } CTLINITHEDIT, FAR *LPCTLINITHEDIT; #endif /* !NOPENHEDIT */ //--------------------------------------------------------------------------- #ifndef NOPENBEDIT typedef struct tagBOXLAYOUT // 1.0 box edit layout { int cyCusp; // pixel height of box (BXS_RECT) or cusp int cyEndCusp; // pixel height of cusps at extreme ends UINT style; // BXS_xx style DWORD dwReserved1; // reserved DWORD dwReserved2; // reserved DWORD dwReserved3; // reserved } BOXLAYOUT, FAR *LPBOXLAYOUT; typedef struct tagCTLINITBEDIT // 2.0 init struct for box edit { DWORD cbSize; // sizeof(CTLINITBEDIT) HWND hwnd; // box edit window handle int id; // its id WORD wSizeCategory; // BESC_xx WORD wFlags; // CIB_xx DWORD dwReserved; // for future use } CTLINITBEDIT, FAR *LPCTLINITBEDIT; typedef struct tagBOXEDITINFO // 1.1 box edit Size Info { int cxBox; // width of a single box int cyBox; // ditto height int cxBase; // in-box x-margin to guideline int cyBase; // in-box y offset from top to baseline int cyMid; // 0 or distance from baseline to midline BOXLAYOUT boxlayout; // embedded BOXLAYOUT structure UINT wFlags; // BEIF_xx BYTE szFaceName[BEI_FACESIZE]; // font face name UINT wFontHeight; // font height UINT rgwReserved[8]; // for future use } BOXEDITINFO, FAR *LPBOXEDITINFO; #endif /*!NOPENBEDIT */ //--------------------------------------------------------------------------- #ifndef NOPENCTL typedef struct tagRECTOFS // 1.0 rectangle offset for nonisometric inflation { int dLeft; // inflation leftwards from left side int dTop; // ditto upwards from top int dRight; // ditto rightwards from right int dBottom; // ditto downwards from bottom } RECTOFS, FAR *LPRECTOFS; #endif /*!NOPENCTL */ //--------------------------------------------------------------------------- #ifndef NOPENDATA typedef struct tagPENDATAHEADER // 1.0 main pen data header { UINT wVersion; // pen data format version UINT cbSizeUsed; // size of pendata mem block in bytes UINT cStrokes; // number of strokes (incl up-strokes) UINT cPnt; // count of all points UINT cPntStrokeMax; // length (in points) of longest stroke RECT rectBound; // bounding rect of all down points UINT wPndts; // PDTS_xx bits int nInkWidth; // ink width in pixels DWORD rgbInk; // ink color } PENDATAHEADER, FAR *LPPENDATAHEADER, FAR *LPPENDATA; typedef struct tagSTROKEINFO // 1.0 stroke header { UINT cPnt; // count of points in stroke UINT cbPnts; // size of stroke in bytes UINT wPdk; // state of stroke DWORD dwTick; // time at beginning of stroke } STROKEINFO, FAR *LPSTROKEINFO; typedef struct tagPENTIP // 2.0 Pen Tip characteristics { DWORD cbSize; // sizeof(PENTIP) BYTE btype; // pen type/nib (calligraphic nib, etc.) BYTE bwidth; // width of Nib (typically == nInkWidth) BYTE bheight; // height of Nib BYTE bOpacity; // 0=transparent, 0x80=hilite, 0xFF=opaque COLORREF rgb; // pen color DWORD dwFlags; // TIP_xx flags DWORD dwReserved; // for future expansion } PENTIP, FAR *LPPENTIP; typedef BOOL (CALLBACK *ANIMATEPROC)(HPENDATA, UINT, UINT, UINT FAR*, LPARAM); typedef struct tagANIMATEINFO // 2.0 Animation parameters { DWORD cbSize; // sizeof(ANIMATEINFO) UINT uSpeedPct; // speed percent to animate at UINT uPeriodCB; // time between calls to callback in ms UINT fuFlags; // animation flags LPARAM lParam; // value to pass to callback DWORD dwReserved; // reserved } ANIMATEINFO, FAR *LPANIMATEINFO; #endif /*!NOPENDATA */ //--------------------------------------------------------------------------- #ifndef NOPENDRIVER typedef struct tagOEMPENINFO // 1.0 OEM pen/tablet hdwe info { UINT wPdt; // pen data type UINT wValueMax; // largest val ret by device UINT wDistinct; // number of distinct readings possible } OEMPENINFO, FAR *LPOEMPENINFO; typedef struct tagPENPACKET // 1.0 pen packet { UINT wTabletX; // x in raw coords UINT wTabletY; // ditto y UINT wPDK; // state bits UINT rgwOemData[MAXOEMDATAWORDS]; // OEM-specific data } PENPACKET, FAR *LPPENPACKET; typedef struct tagOEM_PENPACKET // 2.0 { UINT wTabletX; // x in raw coords UINT wTabletY; // ditto y UINT wPDK; // state bits UINT rgwOemData[MAXOEMDATAWORDS]; // OEM-specific data DWORD dwTime; } OEM_PENPACKET, FAR *LPOEM_PENPACKET; typedef struct tagPENINFO // 1.0 pen/tablet hdwe info { UINT cxRawWidth; // max x coord and tablet width in 0.001" UINT cyRawHeight; // ditto y, height UINT wDistinctWidth; // number of distinct x values tablet ret UINT wDistinctHeight; // ditto y int nSamplingRate; // samples / second int nSamplingDist; // min distance to move before generating event LONG lPdc; // Pen Device Capabilities int cPens; // number of pens supported int cbOemData; // width of OEM data packet OEMPENINFO rgoempeninfo[MAXOEMDATAWORDS]; // supported OEM data types UINT rgwReserved[7]; // for internal use UINT fuOEM; // which OEM data, timing, PDK_xx to report } PENINFO, FAR *LPPENINFO; typedef struct tagCALBSTRUCT // 1.0 pen calibration { int wOffsetX; int wOffsetY; int wDistinctWidth; int wDistinctHeight; } CALBSTRUCT, FAR *LPCALBSTRUCT; typedef BOOL (CALLBACK *LPFNRAWHOOK)(LPPENPACKET); #endif /*!NOPENDRIVER */ //--------------------------------------------------------------------------- #ifndef NOPENHRC // Handwriting Recognizer: DECLARE_HANDLE32(HRC); // Handwriting Recognition Context DECLARE_HANDLE32(HRCRESULT); // HRC result DECLARE_HANDLE32(HWL); // Handwriting wordlist DECLARE_HANDLE32(HRECHOOK); // Recognition Result hook handle typedef HRC FAR *LPHRC; typedef HRCRESULT FAR *LPHRCRESULT; typedef HWL FAR *LPHWL; typedef BOOL (CALLBACK *HRCRESULTHOOKPROC) (HREC, HRC, UINT, UINT, UINT, LPVOID); // Inksets: DECLARE_HANDLE(HINKSET); // handle to an inkset typedef HINKSET FAR* LPHINKSET; // ptr to HINKSET typedef struct tagINTERVAL // 2.0 interval structure for inksets { ABSTIME atBegin; // begining of 1-ms granularity interval ABSTIME atEnd; // 1 ms past end of interval } INTERVAL, FAR *LPINTERVAL; typedef struct tagBOXRESULTS // 2.0 { UINT indxBox; HINKSET hinksetBox; SYV rgSyv[1]; } BOXRESULTS, FAR *LPBOXRESULTS; typedef struct tagGUIDE // 1.0 guide structure { int xOrigin; // left edge of first box (screen coord)) int yOrigin; // ditto top edge int cxBox; // width of a single box int cyBox; // ditto height int cxBase; // in-box x-margin to guideline int cyBase; // in-box y offset from top to baseline int cHorzBox; // count of boxed columns int cVertBox; // ditto rows int cyMid; // 0 or distance from baseline to midline } GUIDE, FAR *LPGUIDE; #endif /*!NOPENHRC */ //--------------------------------------------------------------------------- #ifndef NOPENIEDIT typedef struct tagCTLINITIEDIT // 2.0 init struct for Ink Edit { DWORD cbSize; // sizeof(CTLINITIEDIT) HWND hwnd; // IEdit window handle int id; // its ID WORD ieb; // IEB_* (background) bits WORD iedo; // IEDO_* (draw options) bits WORD iei; // IEI_* (ink input) bits WORD ien; // IEN_* (notification) bits WORD ierec; // IEREC_* (recognition) bits WORD ies; // IES_* (style) bits WORD iesec; // IESEC_* (security) bits WORD pdts; // initial pendata scale factor (PDTS_*) HPENDATA hpndt; // initial pendata (or NULL if none) HGDIOBJ hgdiobj; // background brush or bitmap handle HPEN hpenGrid; // pen to use in drawing grid POINT ptOrgGrid; // grid lines point of origin WORD wVGrid; // vertical gridline spacing WORD wHGrid; // horizontal gridline spacing DWORD dwApp; // application-defined data DWORD dwReserved; // reserved for future use } CTLINITIEDIT, FAR *LPCTLINITIEDIT; typedef struct tagPDEVENT // 2.0 { DWORD cbSize; // sizeof(PDEVENT) HWND hwnd; // window handle of I-Edit UINT wm; // WM_* (window message) of event WPARAM wParam; // wParam of message LPARAM lParam; // lParam of message POINT pt; // event pt in I-Edit client co-ords BOOL fPen; // TRUE if pen (or other inking device) LONG lExInfo; // GetMessageExtraInfo() return value DWORD dwReserved; // for future use } PDEVENT, FAR *LPPDEVENT; typedef struct tagSTRKFMT // 2.0 { DWORD cbSize; // sizeof(STRKFMT) UINT iesf; // stroke format flags and return bits UINT iStrk; // stroke index if IESF_STROKE PENTIP tip; // ink tip attributes DWORD dwUser; // user data for strokes DWORD dwReserved; // for future use } STRKFMT, FAR *LPSTRKFMT; #endif /*!NOPENIEDIT */ //--------------------------------------------------------------------------- #ifndef NOPENINKPUT typedef struct tagPCMINFO // 2.0 Pen Collection Mode Information { DWORD cbSize; // sizeof(PCMINFO) DWORD dwPcm; // PCM_xxx flags RECT rectBound; // if finish on pendown outside this rect RECT rectExclude; // if finish on pendown inside this rect HRGN hrgnBound; // if finish on pendown outside this region HRGN hrgnExclude; // if finish on pendown inside this region DWORD dwTimeout; // if finish after timeout, this many ms } PCMINFO, FAR *LPPCMINFO; typedef struct tagINKINGINFO // 2.0 Pen Inking Information { DWORD cbSize; // sizeof(INKINGINFO) UINT wFlags; // One of the PII_xx flags PENTIP tip; // Pen type, size and color RECT rectClip; // Clipping rect for the ink RECT rectInkStop; // Rect in which a pen down stops inking HRGN hrgnClip; // Clipping region for the ink HRGN hrgnInkStop; // Region in which a pen down stops inking } INKINGINFO, FAR *LPINKINGINFO; #endif /*!NOPENINKPUT */ //--------------------------------------------------------------------------- #ifndef NOPENRC1 // not available in WIN32 typedef struct tagSYC // 1.0 Symbol Correspondence for Ink { UINT wStrokeFirst; // first stroke, inclusive UINT wPntFirst; // first point in first stroke, inclusive UINT wStrokeLast; // last stroke, inclusive UINT wPntLast; // last point in last stroke, inclusive BOOL fLastSyc; // T: no more SYCs follow for current SYE } SYC, FAR *LPSYC; typedef struct tagSYE // 1.0 Symbol Element { SYV syv; // symbol value LONG lRecogVal; // for internal use by recognizer CL cl; // confidence level int iSyc; // SYC index } SYE, FAR *LPSYE; typedef struct tagSYG // 1.0 Symbol Graph { POINT rgpntHotSpots[MAXHOTSPOT]; // hot spots (max 8) int cHotSpot; // number of valid hot spots in rgpntHotSpots int nFirstBox; // row-major index to box of 1st char in result LONG lRecogVal; // reserved for use by recoognizer LPSYE lpsye; // nodes of symbol graph int cSye; // number of SYEs in symbol graph LPSYC lpsyc; // ptr to corresp symbol ink int cSyc; // ditto count } SYG, FAR *LPSYG; typedef struct tagRC // 1.0 Recognition Context (RC) { HREC hrec; // handle of recognizer to use HWND hwnd; // window to send results to UINT wEventRef; // index into ink buffer UINT wRcPreferences; // flags: RCP_xx Preferences LONG lRcOptions; // RCO_xx options RCYIELDPROC lpfnYield; // procedure called during Yield() BYTE lpUser[cbRcUserMax]; // current writer UINT wCountry; // country code UINT wIntlPreferences; // flags: RCIP_xx char lpLanguage[cbRcLanguageMax]; // language strings LPDF rglpdf[MAXDICTIONARIES]; // list of dictionary functions UINT wTryDictionary; // max enumerations to search CL clErrorLevel; // level where recognizer should reject input ALC alc; // enabled alphabet ALC alcPriority; // prioritizes the ALC_ codes BYTE rgbfAlc[cbRcrgbfAlcMax]; // bit field for enabled characters UINT wResultMode; // RRM_xx when to send (asap or when complete) UINT wTimeOut; // recognition timeout in ms LONG lPcm; // flags: PCM_xx for ending recognition RECT rectBound; // bounding rect for inking (def:screen coords) RECT rectExclude; // pen down inside this terminates recognition GUIDE guide; // struct: defines guidelines for recognizer UINT wRcOrient; // RCOR_xx orientation of writing wrt tablet UINT wRcDirect; // RCD_xx direction of writing int nInkWidth; // ink width 0 (none) or 1..15 pixels COLORREF rgbInk; // ink color DWORD dwAppParam; // for application use DWORD dwDictParam; // for app use to be passed on to dictionaries DWORD dwRecognizer; // for app use to be passed on to recognizer UINT rgwReserved[cwRcReservedMax]; // reserved for future use by Windows } RC, FAR *LPRC; typedef struct tagRCRESULT // 1.0 Recognition Result { SYG syg; // symbol graph UINT wResultsType; // see RCRT_xx int cSyv; // count of symbol values LPSYV lpsyv; // NULL-term ptr to recog's best guess HANDLE hSyv; // globally-shared handle to lpsyv mem int nBaseLine; // 0 or baseline of input writing int nMidLine; // ditto midline HPENDATA hpendata; // pen data mem RECT rectBoundInk; // ink data bounds POINT pntEnd; // pt that terminated recog LPRC lprc; // recog context used } RCRESULT, FAR *LPRCRESULT; typedef int (CALLBACK *LPFUNCRESULTS)(LPRCRESULT, REC); #endif /*!NOPENRC1 */ //--------------------------------------------------------------------------- #ifndef NOPENTARGET #ifndef _WIN32 #if (WINVER < 0x0400) #ifndef _OLE2_H_ typedef struct tagRECTL { LONG left; LONG top; LONG right; LONG bottom; } RECTL; typedef RECTL* PRECTL; typedef RECTL NEAR* NPRECTL; typedef RECTL FAR* LPRECTL; typedef const RECTL FAR* LPCRECTL; #endif // !_OLE2_H_ #endif // WINVER #endif // !WIN32 typedef struct tagTARGET // 2.0 Geometry for a single target. { DWORD dwFlags; // individual target flags DWORD idTarget; // TARGINFO.rgTarget[] index HTRG htrgTarget; // HANDLE32 equiv RECTL rectBound; // Bounding rect of the target DWORD dwData; // data collection info per target RECTL rectBoundInk; // Reserved for internal use, must be zero RECTL rectBoundLastInk; // Reserved for internal use, must be zero } TARGET, FAR *LPTARGET; typedef struct tagTARGINFO // 2.0 A set of targets { DWORD cbSize; // sizeof(TARGINFO) DWORD dwFlags; // flags HTRG htrgOwner; // HANDLE32 equiv WORD cTargets; // count of targets WORD iTargetLast; // last target, used by TargetPoints API // if TPT_TEXTUAL flag is set TARGET rgTarget[1]; // variable-length array of targets } TARGINFO, FAR *LPTARGINFO; typedef struct tagINPPARAMS // 2.0 { DWORD cbSize; // sizeof(INPPARAMS) DWORD dwFlags; HPENDATA hpndt; TARGET target; // target structure } INPPARAMS, FAR *LPINPPARAMS; #endif /*!NOPENTARGET */ #ifdef JAPAN typedef struct tagCWX // 2.0 { DWORD cbSize; // sizeof(CWXSTRUCT): required entry WORD wApplyFlags; // CWXA_xx apply flags (else use MRU settings) HWND hwndText; // text window if different [NULL=use owner] HRC hrc; // recognition context [def NULL] char szCaption[CBCAPTIONCWX];// caption [def {0}] DWORD dwEditStyle; // style for edit control [def 0] DWORD dwSel; // selection [def 0] // these use Most Recent settings unless corresp [wApplyFlags] bit set: DWORD dwFlags; // CWX_xx context flags [CWXA_CONTEXT] WORD ixkb; // CWXK_xx keyboard [CWXA_KBD] WORD rgState[CKBCWX]; // array of keyboard states [CWXA_STATE] POINT ptUL; // dlg u.l. corner, screen coords [CWXA_PTUL] SIZE sizeHW; // dlg HW tab size, screen coords [CWXA_SIZE] } CWX, FAR *LPCWX; #endif //JAPAN ////////////////////////////////////////////////////////////////////////////// /****** APIs and Prototypes *************************************************/ LRESULT CALLBACK DefPenWindowProc(HWND, UINT, WPARAM, LPARAM); //--------------------------------------------------------------------------- #ifndef NOPENAPPS // not available in WIN32 // Pen System Applications: BOOL WINAPI ShowKeyboard(HWND, UINT, LPPOINT, LPSKBINFO); #endif /*!NOPENAPPS */ //--------------------------------------------------------------------------- #ifndef NOPENDATA // these APIs are implemented in PKPD.DLL // PenData: #ifndef NOPENAPIFUN LPPENDATA WINAPI BeginEnumStrokes(HPENDATA); LPPENDATA WINAPI EndEnumStrokes(HPENDATA); HPENDATA WINAPI CompactPenData(HPENDATA, UINT); HPENDATA WINAPI CreatePenData(LPPENINFO, int, UINT, UINT); VOID WINAPI DrawPenData(HDC, LPRECT, HPENDATA); BOOL WINAPI GetPenDataStroke(LPPENDATA, UINT, LPPOINT FAR*, LPVOID FAR*, LPSTROKEINFO); #endif //!NOPENAPIFUN HPENDATA WINAPI AddPointsPenData(HPENDATA, LPPOINT, LPVOID, LPSTROKEINFO); int WINAPI CompressPenData(HPENDATA, UINT, DWORD); HPENDATA WINAPI CreatePenDataEx(LPPENINFO, UINT, UINT, UINT); HRGN WINAPI CreatePenDataRegion(HPENDATA, UINT); BOOL WINAPI DestroyPenData(HPENDATA); int WINAPI DrawPenDataEx(HDC, LPRECT, HPENDATA, UINT, UINT, UINT, UINT, ANIMATEPROC, LPANIMATEINFO, UINT); HPENDATA WINAPI DuplicatePenData(HPENDATA, UINT); int WINAPI ExtractPenDataPoints(HPENDATA, UINT, UINT, UINT, LPPOINT, LPVOID, UINT); int WINAPI ExtractPenDataStrokes(HPENDATA, UINT, LPARAM, LPHPENDATA, UINT); int WINAPI GetPenDataAttributes(HPENDATA, LPVOID, UINT); BOOL WINAPI GetPenDataInfo(HPENDATA, LPPENDATAHEADER, LPPENINFO, DWORD); BOOL WINAPI GetPointsFromPenData(HPENDATA, UINT, UINT, UINT, LPPOINT); int WINAPI GetStrokeAttributes(HPENDATA, UINT, LPVOID, UINT); int WINAPI GetStrokeTableAttributes(HPENDATA, UINT, LPVOID, UINT); int WINAPI HitTestPenData(HPENDATA, LPPOINT, UINT, UINT FAR*, UINT FAR*); int WINAPI InsertPenData(HPENDATA, HPENDATA, UINT); int WINAPI InsertPenDataPoints(HPENDATA, UINT, UINT, UINT, LPPOINT, LPVOID); int WINAPI InsertPenDataStroke(HPENDATA, UINT, LPPOINT, LPVOID, LPSTROKEINFO); BOOL WINAPI MetricScalePenData(HPENDATA, UINT); BOOL WINAPI OffsetPenData(HPENDATA, int, int); LONG WINAPI PenDataFromBuffer(LPHPENDATA, UINT, LPBYTE, LONG, LPDWORD); LONG WINAPI PenDataToBuffer(HPENDATA, LPBYTE, LONG, LPDWORD); BOOL WINAPI RedisplayPenData(HDC, HPENDATA, LPPOINT, LPPOINT, int, DWORD); int WINAPI RemovePenDataStrokes(HPENDATA, UINT, UINT); BOOL WINAPI ResizePenData(HPENDATA, LPRECT); int WINAPI SetStrokeAttributes(HPENDATA, UINT, LPARAM, UINT); int WINAPI SetStrokeTableAttributes(HPENDATA, UINT, LPARAM, UINT); int WINAPI TrimPenData(HPENDATA, DWORD, DWORD); #endif /*!NOPENDATA */ //--------------------------------------------------------------------------- #ifndef NOPENDICT // not available in WIN32 // Dictionary: BOOL WINAPI DictionarySearch(LPRC, LPSYE, int, LPSYV, int); #endif /*!NOPENDICT */ //--------------------------------------------------------------------------- #ifndef NOPENDRIVER // Pen Hardware/Driver: #ifndef NOPENAPIFUN BOOL WINAPI EndPenCollection(REC); REC WINAPI GetPenHwData(LPPOINT, LPVOID, int, UINT, LPSTROKEINFO); REC WINAPI GetPenHwEventData(UINT, UINT, LPPOINT, LPVOID, int, LPSTROKEINFO); BOOL WINAPI SetPenHook(HKP, LPFNRAWHOOK); VOID WINAPI UpdatePenInfo(LPPENINFO); #endif //!NOPENAPIFUN BOOL WINAPI GetPenAsyncState(UINT); BOOL WINAPI IsPenEvent(UINT, LONG); #endif /*!NOPENDRIVER */ //--------------------------------------------------------------------------- #ifndef NOPENHRC // Handwriting Recognizer: int WINAPI AddPenDataHRC(HRC, HPENDATA); int WINAPI AddPenInputHRC(HRC, LPPOINT, LPVOID, UINT, LPSTROKEINFO); int WINAPI AddWordsHWL(HWL, LPSTR, UINT); int WINAPI ConfigHREC(HREC, UINT, WPARAM, LPARAM); HRC WINAPI CreateCompatibleHRC(HRC, HREC); HWL WINAPI CreateHWL(HREC, LPSTR, UINT, DWORD); HINKSET WINAPI CreateInksetHRCRESULT(HRCRESULT, UINT, UINT); HPENDATA WINAPI CreatePenDataHRC(HRC); int WINAPI DestroyHRC(HRC); int WINAPI DestroyHRCRESULT(HRCRESULT); int WINAPI DestroyHWL(HWL); int WINAPI EnableGestureSetHRC(HRC, SYV, BOOL); int WINAPI EnableSystemDictionaryHRC(HRC, BOOL); int WINAPI EndPenInputHRC(HRC); int WINAPI GetAlphabetHRC(HRC, LPALC, LPBYTE); int WINAPI GetAlphabetPriorityHRC(HRC, LPALC, LPBYTE); int WINAPI GetAlternateWordsHRCRESULT(HRCRESULT, UINT, UINT, LPHRCRESULT, UINT); int WINAPI GetBoxMappingHRCRESULT(HRCRESULT, UINT, UINT, UINT FAR*); int WINAPI GetBoxResultsHRC(HRC, UINT, UINT, UINT, LPBOXRESULTS, BOOL); int WINAPI GetGuideHRC(HRC, LPGUIDE, UINT FAR*); int WINAPI GetHotspotsHRCRESULT(HRCRESULT, UINT, LPPOINT, UINT); HREC WINAPI GetHRECFromHRC(HRC); int WINAPI GetInternationalHRC(HRC, UINT FAR*, LPSTR, UINT FAR*, UINT FAR*); int WINAPI GetMaxResultsHRC(HRC); int WINAPI GetResultsHRC(HRC, UINT, LPHRCRESULT, UINT); int WINAPI GetSymbolCountHRCRESULT(HRCRESULT); int WINAPI GetSymbolsHRCRESULT(HRCRESULT, UINT, LPSYV, UINT); int WINAPI GetWordlistHRC(HRC, LPHWL); int WINAPI GetWordlistCoercionHRC(HRC); int WINAPI ProcessHRC(HRC, DWORD); int WINAPI ReadHWL(HWL, HFILE); int WINAPI SetAlphabetHRC(HRC, ALC, LPBYTE); int WINAPI SetAlphabetPriorityHRC(HRC, ALC, LPBYTE); int WINAPI SetBoxAlphabetHRC(HRC, LPALC, UINT); int WINAPI SetGuideHRC(HRC, LPGUIDE, UINT); int WINAPI SetInternationalHRC(HRC, UINT, LPCSTR, UINT, UINT); int WINAPI SetMaxResultsHRC(HRC, UINT); HRECHOOK WINAPI SetResultsHookHREC(HREC, HRCRESULTHOOKPROC); int WINAPI SetWordlistCoercionHRC(HRC, UINT); int WINAPI SetWordlistHRC(HRC, HWL); int WINAPI TrainHREC(HREC, LPSYV, UINT, HPENDATA, UINT); int WINAPI UnhookResultsHookHREC(HREC, HRECHOOK); int WINAPI WriteHWL(HWL, HFILE); // Recognizer Installation: HREC WINAPI InstallRecognizer(LPSTR); VOID WINAPI UninstallRecognizer(HREC); // Inksets: BOOL WINAPI AddInksetInterval(HINKSET, LPINTERVAL); HINKSET WINAPI CreateInkset(UINT); BOOL WINAPI DestroyInkset(HINKSET); int WINAPI GetInksetInterval(HINKSET, UINT, LPINTERVAL); int WINAPI GetInksetIntervalCount(HINKSET); // Symbol Values: int WINAPI CharacterToSymbol(LPSTR, int, LPSYV); BOOL WINAPI SymbolToCharacter(LPSYV, int, LPSTR, LPINT); #endif /*!NOPENHRC */ //--------------------------------------------------------------------------- #ifndef NOPENINKPUT // Pen Input/Inking: int WINAPI DoDefaultPenInput(HWND, UINT); int WINAPI GetPenInput(HPCM, LPPOINT, LPVOID, UINT, UINT, LPSTROKEINFO); int WINAPI PeekPenInput(HPCM, UINT, LPPOINT, LPVOID, UINT); int WINAPI StartInking(HPCM, UINT, LPINKINGINFO); HPCM WINAPI StartPenInput(HWND, UINT, LPPCMINFO, LPINT); int WINAPI StopInking(HPCM); int WINAPI StopPenInput(HPCM, UINT, int); #endif /*!NOPENINKPUT */ //--------------------------------------------------------------------------- #ifndef NOPENMISC // Miscellaneous/Utilities: VOID WINAPI BoundingRectFromPoints(LPPOINT, UINT, LPRECT); BOOL WINAPI DPtoTP(LPPOINT, int); UINT WINAPI GetPenAppFlags(VOID); VOID WINAPI SetPenAppFlags(UINT, UINT); LONG WINAPI GetPenMiscInfo(WPARAM, LPARAM); UINT WINAPI GetVersionPenWin(VOID); LONG WINAPI SetPenMiscInfo(WPARAM, LPARAM); BOOL WINAPI TPtoDP(LPPOINT, int); BOOL WINAPI CorrectWriting(HWND, LPSTR, UINT, LPVOID, DWORD, DWORD); #ifdef JAPAN int WINAPI CorrectWritingEx(HWND, LPSTR, UINT, LPCWX); #endif //JAPAN #ifdef JAPAN HANDLE WINAPI GetPenResource(WPARAM); #endif //JAPAN #ifndef _WIN32 UINT WINAPI IsPenAware(VOID); VOID WINAPI RegisterPenApp(UINT, UINT); #endif //!_WIN32 #endif /*!NOPENMISC */ //--------------------------------------------------------------------------- #ifndef NOPENRC1 // not available in WIN32 // RC1: VOID WINAPI EmulatePen(BOOL); UINT WINAPI EnumSymbols(LPSYG, UINT, ENUMPROC, LPVOID); BOOL WINAPI ExecuteGesture(HWND, SYV, LPRCRESULT); VOID WINAPI FirstSymbolFromGraph(LPSYG, LPSYV, int, LPINT); UINT WINAPI GetGlobalRC(LPRC, LPSTR, LPSTR, int); int WINAPI GetSymbolCount(LPSYG); int WINAPI GetSymbolMaxLength(LPSYG); VOID WINAPI InitRC(HWND, LPRC); REC WINAPI ProcessWriting(HWND, LPRC); REC WINAPI Recognize(LPRC); REC WINAPI RecognizeData(LPRC, HPENDATA); UINT WINAPI SetGlobalRC(LPRC, LPSTR, LPSTR); BOOL WINAPI SetRecogHook(UINT, UINT, HWND); BOOL WINAPI TrainContext(LPRCRESULT, LPSYE, int, LPSYC, int); BOOL WINAPI TrainInk(LPRC, HPENDATA, LPSYV); // Custom Recognizer functions - not PenWin APIs (formerly in penwoem.h): VOID WINAPI CloseRecognizer(VOID); UINT WINAPI ConfigRecognizer(UINT, WPARAM, LPARAM); BOOL WINAPI InitRecognizer(LPRC); REC WINAPI RecognizeDataInternal(LPRC, HPENDATA, LPFUNCRESULTS); REC WINAPI RecognizeInternal(LPRC, LPFUNCRESULTS); BOOL WINAPI TrainContextInternal(LPRCRESULT, LPSYE, int, LPSYC, int); BOOL WINAPI TrainInkInternal(LPRC, HPENDATA, LPSYV); #endif /*!NOPENRC1 */ //--------------------------------------------------------------------------- #ifndef NOPENTARGET // Ink Targeting: int WINAPI TargetPoints(LPTARGINFO, LPPOINT, DWORD, UINT, LPSTROKEINFO); #endif /*!NOPENTARGET */ //--------------------------------------------------------------------------- #ifndef NOPENVIRTEVENT // Virtual Event Layer: VOID WINAPI AtomicVirtualEvent(BOOL); VOID WINAPI PostVirtualKeyEvent(UINT, BOOL); VOID WINAPI PostVirtualMouseEvent(UINT, int, int); #endif /*!NOPENVIRTEVENT */ //--------------------------------------------------------------------------- #ifdef JAPAN // Kanji BOOL WINAPI KKConvert(HWND hwndConvert, HWND hwndCaller, LPSTR lpBuf, UINT cbBuf, LPPOINT lpPnt); #endif // JAPAN #endif /* RC_INVOKED */ // ... all the way back from definitions:3 /****** End of Header Info *************************************************/ #ifdef __cplusplus } #endif /* __cplusplus */ #ifndef _WIN32 #ifndef RC_INVOKED #pragma pack() #endif /* RC_INVOKED */ #endif //!_WIN32 #endif /* #define _INC_PENWIN */