/*****************************************************************************\ * * * penwin.h - Pen Windows functions, types, and definitions * * * * Version 1.0 * * * * Copyright (c) 1992, Microsoft Corp. All rights reserved. * * * \*****************************************************************************/ #ifndef _INC_WINDOWS #include /* must be pre-included */ #endif /* _INC_WINDOWS */ #ifndef _INC_PENWIN /* prevent multiple includes */ #define _INC_PENWIN #ifndef RC_INVOKED #pragma pack(1) #endif /* RC_INVOKED */ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /****** General Pen Windows Definitions *************************************/ typedef int REC; typedef LONG SYV; typedef SYV FAR *LPSYV; typedef HANDLE HREC; typedef int CL; typedef LONG ALC; typedef UINT HKP; typedef int (CALLBACK * LPDF)(int, LPVOID, LPVOID, int, DWORD, DWORD); #define BITPENUP 0x8000 #define FPenUpX(x) (((x) & BITPENUP)!=0) /* 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) #define RC_WDEFAULT (0xFFFF) #define RC_LDEFAULT (0xFFFFFFFFL) #define RC_WDEFAULTFLAGS (0x8000) #define RC_LDEFAULTFLAGS (0x80000000L) /* HIWORD(SYV) defines and detection macros */ #define SYVHI_SPECIAL 0 #define FIsSpecial(syv) (HIWORD((syv))==SYVHI_SPECIAL) #define SYVHI_ANSI 1 #define FIsAnsi(syv) (HIWORD((syv))==SYVHI_ANSI) #define SYVHI_GESTURE 2 #define FIsGesture(syv) (HIWORD((syv))==SYVHI_GESTURE) #define SYVHI_KANJI 3 #define FIsKanji(syv) (HIWORD((syv))==SYVHI_KANJI) #define SYVHI_SHAPE 4 #define FIsShape(syv) (HIWORD((syv))==SYVHI_SHAPE) #define SYVHI_UNICODE 5 #define FIsUniCode(syv) (HIWORD((syv))==SYVHI_UNICODE) #define SYVHI_VKEY 6 #define FIsVKey(syv) (HIWORD((syv))==SYVHI_VKEY) /* Macros to convert between SYV and ANSI */ #define ChSyvToAnsi(syv) ((BYTE) (LOBYTE(LOWORD((syv))))) #define SyvCharacterToSymbol(c) ((LONG)(unsigned char)(c) | 0x00010000) #define SyvKanjiToSymbol(c) ((LONG)(WORD)(c) | 0x00030000) /* SYV values with special meanings to Pen Windows */ #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 SyvCharacterToSymbol('\0') /* SYV values for gestures (map into UNICODE space) */ #define SYV_KKCONVERT 0x0002FFD4L #define SYV_CLEAR 0x0002FFD5L #define SYV_EXTENDSELECT 0x0002FFD8L #define SYV_UNDO 0x0002FFD9L #define SYV_COPY 0x0002FFDAL #define SYV_CUT 0x0002FFDBL #define SYV_PASTE 0x0002FFDCL #define SYV_CLEARWORD 0x0002FFDDL #define SYV_USER 0x0002FFDEL /* ;Reserved */ #define SYV_CORRECT 0x0002FFDFL #define SYV_BACKSPACE 0x00020008L #define SYV_TAB 0x00020009L #define SYV_RETURN 0x0002000DL #define SYV_SPACE 0x00020020L #define FIsStdGesture(syv) \ ((syv) == SYV_CLEAR \ || (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) /* Application specific gestures, Circle a-z and Circle A-Z */ #define SYV_APPGESTUREMASK 0x00020000L #define SYV_CIRCLEUPA 0x000224B6L #define SYV_CIRCLEUPZ 0x000224CFL #define SYV_CIRCLELOA 0x000224D0L #define SYV_CIRCLELOZ 0x000224E9L /* Gesture Macros */ #define FIsLoAppGesture(syv) (syv >= SYV_CIRCLELOA && syv <= SYV_CIRCLELOZ) #define FIsUpAppGesture(syv) (syv >= SYV_CIRCLEUPA && syv <= SYV_CIRCLEUPZ) #define FIsAppGesture(syv) (syv>=SYV_CIRCLEUPA && syv<=SYV_CIRCLELOZ) #define SyvAppGestureFromLoAnsi(ansi) ((DWORD)(BYTE)ansi- 'a' + SYV_CIRCLELOA) #define SyvAppGestureFromUpAnsi(ansi) ((DWORD)(BYTE)ansi- 'A' + SYV_CIRCLEUPA) #define AnsiFromSyvAppGesture(syv) ChSyvToAnsi( \ syv-(FIsUpAppGesture(syv)? SYV_CIRCLEUPA-(SYV)'A': SYV_CIRCLELOA-(SYV)'a')) /* SYV definitions for shapes */ #define SYV_SHAPELINE 0x00040001L #define SYV_SHAPEELLIPSE 0x00040002L #define SYV_SHAPERECT 0x00040003L #define SYV_SHAPEMIN SYV_SHAPELINE #define SYV_SHAPEMAX SYV_SHAPERECT /****** Recognition Error Codes *********************************************/ #define REC_OEM (-1024) #define REC_LANGUAGE (-48) #define REC_GUIDE (-47) #define REC_PARAMERROR (-46) #define REC_INVALIDREF (-45) #define REC_RECTEXCLUDE (-44) #define REC_RECTBOUND (-43) #define REC_PCM (-42) #define REC_RESULTMODE (-41) #define REC_HWND (-40) #define REC_ALC (-39) #define REC_ERRORLEVEL (-38) #define REC_CLVERIFY (-37) #define REC_DICT (-36) #define REC_HREC (-35) #define REC_BADEVENTREF (-33) #define REC_NOCOLLECTION (-32) #define REC_DEBUG (-32) #define REC_POINTEREVENT (-31) #define REC_BADHPENDATA (-9) #define REC_OOM (-8) #define REC_NOINPUT (-7) #define REC_NOTABLET (-6) #define REC_BUSY (-5) #define REC_BUFFERTOOSMALL (-4) #define REC_ABORT (-3) #define REC_OVERFLOW (-1) #define REC_OK 0 #define REC_TERMBOUND 1 #define REC_TERMEX 2 #define REC_TERMPENUP 3 #define REC_TERMRANGE 4 #define REC_TERMTIMEOUT 5 #define REC_DONE 6 #define REC_TERMOEM 512 /****** Pen Driver Structures and Entry points ******************************/ typedef struct tagOEMPENINFO { UINT wPdt; UINT wValueMax; UINT wDistinct; } OEMPENINFO, FAR *LPOEMPENINFO; #define PDT_NULL 0 #define PDT_PRESSURE 1 #define PDT_HEIGHT 2 #define PDT_ANGLEXY 3 #define PDT_ANGLEZ 4 #define PDT_BARRELROTATION 5 #define PDT_OEMSPECIFIC 16 #define MAXOEMDATAWORDS 6 typedef struct tagPENPACKET { UINT wTabletX; UINT wTabletY; UINT wPDK; UINT rgwOemData[MAXOEMDATAWORDS]; } PENPACKET, FAR *LPPENPACKET; typedef BOOL (CALLBACK * LPFNRAWHOOK)(LPPENPACKET); typedef struct tagPENINFO { UINT cxRawWidth; UINT cyRawHeight; UINT wDistinctWidth; UINT wDistinctHeight; int nSamplingRate; int nSamplingDist; LONG lPdc; int cPens; int cbOemData; OEMPENINFO rgoempeninfo[MAXOEMDATAWORDS]; UINT rgwReserved[8]; } PENINFO, FAR *LPPENINFO; #define PDC_INTEGRATED 0x00000001L #define PDC_PROXIMITY 0x00000002L #define PDC_RANGE 0x00000004L #define PDC_INVERT 0x00000008L #define PDC_RELATIVE 0x00000010L #define PDC_BARREL1 0x00000020L #define PDC_BARREL2 0x00000040L #define PDC_BARREL3 0x00000080L typedef struct tagSTROKEINFO { UINT cPnt; UINT cbPnts; UINT wPdk; DWORD dwTick; } STROKEINFO, FAR *LPSTROKEINFO; typedef struct tagCALBSTRUCT { int wOffsetX; int wOffsetY; int wDistinctWidth; int wDistinctHeight; } CALBSTRUCT, FAR *LPCALBSTRUCT; /****** DRV_ values for pen driver specific messages ************************/ #define DRV_SetPenDriverEntryPoints DRV_RESERVED+1 #define DRV_RemovePenDriverEntryPoints DRV_RESERVED+2 #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_GetCalibration DRV_RESERVED+11 #define DRV_SetCalibration DRV_RESERVED+12 VOID WINAPI UpdatePenInfo(LPPENINFO); BOOL WINAPI EndPenCollection(REC); REC WINAPI GetPenHwData(LPPOINT, LPVOID, int, UINT, LPSTROKEINFO); REC WINAPI GetPenHwEventData(UINT, UINT, LPPOINT, LPVOID, int, LPSTROKEINFO); VOID WINAPI PenPacket(VOID); BOOL WINAPI SetPenHook(HKP, LPFNRAWHOOK); /****** Pen Hardware Constants **********************************************/ #define PDK_UP 0x0000 #define PDK_DOWN 0x0001 #define PDK_BARREL1 0x0002 #define PDK_BARREL2 0x0004 #define PDK_BARREL3 0x0008 #define PDK_TRANSITION 0x0010 #define PDK_INVERTED 0x0080 #define PDK_OUTOFRANGE 0x4000 #define PDK_DRIVER 0x8000 #define PDK_TIPMASK 0x0001 #define PDK_SWITCHES (PDK_DOWN|PDK_BARREL1|PDK_BARREL2|PDK_BARREL3) #define PCM_PENUP 0x00000001L #define PCM_RANGE 0x00000002L #define PCM_INVERT 0x00000020L #define PCM_RECTEXCLUDE 0x00002000L #define PCM_RECTBOUND 0x00004000L #define PCM_TIMEOUT 0x00008000L #define PCM_ADDDEFAULTS RC_LDEFAULTFLAGS /* 0x80000000L */ /****** Virtual Event Layer *************************************************/ VOID WINAPI PostVirtualKeyEvent(UINT, BOOL); VOID WINAPI PostVirtualMouseEvent(UINT, int, int); VOID WINAPI AtomicVirtualEvent(BOOL); #define VWM_MOUSEMOVE 0x0001 #define VWM_MOUSELEFTDOWN 0x0002 #define VWM_MOUSELEFTUP 0x0004 #define VWM_MOUSERIGHTDOWN 0x0008 #define VWM_MOUSERIGHTUP 0x0010 /****** RC Definition *************************************************************/ #define CL_NULL 0 #define CL_MINIMUM 1 #define CL_MAXIMUM 100 #define INKWIDTH_MINIMUM 0 #define INKWIDTH_MAXIMUM 15 #define ENUM_MINIMUM 1 #define ENUM_MAXIMUM 4096 #define MAXDICTIONARIES 16 typedef struct tagGUIDE { int xOrigin; int yOrigin; int cxBox; int cyBox; int cxBase; int cyBase; int cHorzBox; int cVertBox; int cyMid; } GUIDE, FAR *LPGUIDE; typedef BOOL (CALLBACK * RCYIELDPROC)(VOID); #define cbRcLanguageMax 44 #define cbRcUserMax 32 #define cbRcrgbfAlcMax 32 #define cwRcReservedMax 8 typedef struct tagRC { HREC hrec; HWND hwnd; UINT wEventRef; UINT wRcPreferences; LONG lRcOptions; RCYIELDPROC lpfnYield; BYTE lpUser[cbRcUserMax]; UINT wCountry; UINT wIntlPreferences; char lpLanguage[cbRcLanguageMax]; LPDF rglpdf[MAXDICTIONARIES]; UINT wTryDictionary; CL clErrorLevel; ALC alc; ALC alcPriority; BYTE rgbfAlc[cbRcrgbfAlcMax]; UINT wResultMode; UINT wTimeOut; LONG lPcm; RECT rectBound; RECT rectExclude; GUIDE guide; UINT wRcOrient; UINT wRcDirect; int nInkWidth; COLORREF rgbInk; DWORD dwAppParam; DWORD dwDictParam; DWORD dwRecognizer; UINT rgwReserved[cwRcReservedMax]; } RC, FAR *LPRC; typedef HANDLE HPENDATA; typedef struct tagSYC { UINT wStrokeFirst; UINT wPntFirst; UINT wStrokeLast; UINT wPntLast; BOOL fLastSyc; } SYC, FAR *LPSYC; #define wPntAll (UINT)0xFFFF #define iSycNull (-1) typedef struct tagSYE { SYV syv; LONG lRecogVal; CL cl; int iSyc; } SYE, FAR *LPSYE; #define MAXHOTSPOT 8 typedef struct tagSYG { POINT rgpntHotSpots[MAXHOTSPOT]; int cHotSpot; int nFirstBox; LONG lRecogVal; LPSYE lpsye; int cSye; LPSYC lpsyc; int cSyc; } SYG, FAR *LPSYG; typedef int (CALLBACK *ENUMPROC)(LPSYV, int, VOID FAR *); typedef struct tagRCRESULT { SYG syg; UINT wResultsType; int cSyv; LPSYV lpsyv; HANDLE hSyv; int nBaseLine; int nMidLine; HPENDATA hpendata; RECT rectBoundInk; POINT pntEnd; LPRC lprc; } RCRESULT, FAR *LPRCRESULT; #define RCRT_DEFAULT 0x0000 #define RCRT_UNIDENTIFIED 0x0001 #define RCRT_GESTURE 0x0002 #define RCRT_NOSYMBOLMATCH 0x0004 #define RCRT_PRIVATE 0x4000 #define RCRT_NORECOG 0x8000 #define RCRT_ALREADYPROCESSED 0x0008 #define RCRT_GESTURETRANSLATED 0x0010 #define RCRT_GESTURETOKEYS 0x0020 #define HKP_SETHOOK 0 #define HKP_UNHOOK 0xFFFF #define HWR_RESULTS 0 #define HWR_APPWIDE 1 #define PEN_NOINKWIDTH 0 #define LPDFNULL ((LPDF)NULL) #define RPA_DEFAULT 1 /* GetGlobalRC return codes */ #define GGRC_OK 0 #define GGRC_DICTBUFTOOSMALL 1 #define GGRC_PARAMERROR 2 /* SetGlobalRC return code flags */ #define SGRC_OK 0x0000 #define SGRC_USER 0x0001 #define SGRC_PARAMERROR 0x0002 #define SGRC_RC 0x0004 #define SGRC_RECOGNIZER 0x0008 #define SGRC_DICTIONARY 0x0010 #define SGRC_INIFILE 0x0020 #define GetWEventRef() (LOWORD(GetMessageExtraInfo())) HREC WINAPI InstallRecognizer(LPSTR); VOID WINAPI UninstallRecognizer(HREC); UINT WINAPI GetGlobalRC(LPRC, LPSTR, LPSTR, int); UINT WINAPI SetGlobalRC(LPRC, LPSTR, LPSTR); VOID WINAPI RegisterPenApp(UINT, BOOL); UINT WINAPI IsPenAware(VOID); BOOL WINAPI SetRecogHook(UINT, UINT, HWND); VOID WINAPI InitRC(HWND, LPRC); REC WINAPI Recognize(LPRC); REC WINAPI RecognizeData(LPRC, HPENDATA); BOOL WINAPI TrainInk(LPRC, HPENDATA, LPSYV); BOOL WINAPI TrainContext(LPRCRESULT, LPSYE, int, LPSYC, int); REC WINAPI ProcessWriting(HWND, LPRC); BOOL WINAPI CorrectWriting(HWND, LPSTR, UINT, LPRC, DWORD, DWORD); VOID WINAPI EmulatePen(BOOL); int WINAPI GetSymbolMaxLength(LPSYG); int WINAPI GetSymbolCount(LPSYG); VOID WINAPI FirstSymbolFromGraph(LPSYG, LPSYV, int, int FAR *); UINT WINAPI EnumSymbols(LPSYG, WORD, ENUMPROC, LPVOID); /****** Miscellaneous Functions *********************************************/ BOOL WINAPI TPtoDP(LPPOINT, int); BOOL WINAPI DPtoTP(LPPOINT, int); VOID WINAPI BoundingRectFromPoints(LPPOINT, int, LPRECT); BOOL WINAPI SymbolToCharacter(LPSYV, int, LPSTR, LPINT); int WINAPI CharacterToSymbol(LPSTR, int, LPSYV); UINT WINAPI GetVersionPenWin(VOID); BOOL WINAPI ExecuteGesture(HWND, SYV, LPRCRESULT); /****** RC Options and Flags ***********************************************/ #define ALC_ALL 0x000043FFL #define ALC_DEFAULT 0x00000000L #define ALC_LCALPHA 0x00000001L #define ALC_UCALPHA 0x00000002L #define ALC_ALPHA 0x00000003L #define ALC_NUMERIC 0x00000004L #define ALC_ALPHANUMERIC 0x00000007L #define ALC_PUNC 0x00000008L #define ALC_MATH 0x00000010L #define ALC_MONETARY 0x00000020L #define ALC_OTHER 0x00000040L #define ALC_WHITE 0x00000100L #define ALC_NONPRINT 0x00000200L #define ALC_GESTURE 0x00004000L #define ALC_USEBITMAP 0x00008000L #define ALC_DBCS 0x00000400L #define ALC_HIRAGANA 0x00010000L #define ALC_KATAKANA 0x00020000L #define ALC_KANJI 0x00040000L #define ALC_OEM 0x0FF80000L #define ALC_RESERVED 0xF0003800L #define ALC_NOPRIORITY 0x00000000L #define ALC_SYSMINIMUM (ALC_ALPHANUMERIC | ALC_PUNC | ALC_WHITE | ALC_GESTURE) #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) #define RCD_DEFAULT 0 #define RCD_LR 1 #define RCD_RL 2 #define RCD_TB 3 #define RCD_BT 4 #define RCO_NOPOINTEREVENT 0x00000001L #define RCO_SAVEALLDATA 0x00000002L #define RCO_SAVEHPENDATA 0x00000004L #define RCO_NOFLASHUNKNOWN 0x00000008L #define RCO_TABLETCOORD 0x00000010L #define RCO_NOSPACEBREAK 0x00000020L #define RCO_NOHIDECURSOR 0x00000040L #define RCO_NOHOOK 0x00000080L #define RCO_BOXED 0x00000100L #define RCO_SUGGEST 0x00000200L #define RCO_DISABLEGESMAP 0x00000400L #define RCO_NOFLASHCURSOR 0x00000800L #define RCO_COLDRECOG 0x00008000L #define RCP_LEFTHAND 0x0001 #define RCP_MAPCHAR 0x0004 #define RCOR_NORMAL 1 #define RCOR_RIGHT 2 #define RCOR_UPSIDEDOWN 3 #define RCOR_LEFT 4 #define RRM_STROKE 0 #define RRM_SYMBOL 1 #define RRM_WORD 2 #define RRM_NEWLINE 3 #define RRM_COMPLETE 16 #define RCIP_ALLANSICHAR 0x0001 #define RCIP_MASK 0x0001 #define CWR_STRIPCR 0x00000001L #define CWR_STRIPLF 0x00000002L #define CWR_STRIPTAB 0x00000004L #define CWR_SINGLELINEEDIT 0x00000007L #define CWR_TITLE 0x00000010L #define CWR_KKCONVERT 0x00000020L #define MAP_GESTOGES (RCRT_GESTURE|RCRT_GESTURETRANSLATED) #define MAP_GESTOVKEYS (RCRT_GESTURETOKEYS|RCRT_ALREADYPROCESSED) #define IsGestureToGesture(lprcresult) (((lprcresult)->wResultstype & MAP_GESTOGES \ ) == MAP_GESTOGES) #define IsGestureToVkeys(lprcresult) (((lprcresult)->wResultstype & MAP_GESTOVKEYS \ ) == MAP_GESTOVKEYS) #define SetAlreadyProcessed(lprcresult) ((lprcresult)->wResultsType = ((lprcresult)->wResultsType \ & ~RCRT_GESTURETOKEYS) | RCRT_ALREADYPROCESSED) /****** Pen Data Type *******************************************************/ typedef struct tagPENDATAHEADER { UINT wVersion; UINT cbSizeUsed; UINT cStrokes; UINT cPnt; UINT cPntStrokeMax; RECT rectBound; UINT wPndts; int nInkWidth; DWORD rgbInk; } PENDATAHEADER, FAR *LPPENDATAHEADER, FAR *LPPENDATA; #define PDTS_LOMETRIC 0x0000 #define PDTS_HIMETRIC 0x0001 #define PDTS_HIENGLISH 0x0002 #define PDTS_SCALEMAX 0x0003 #define PDTS_DISPLAY 0x0003 #define PDTS_ARBITRARY 0x0004 #define PDTS_SCALEMASK 0x000F #define PDTS_STANDARDSCALE PDTS_HIENGLISH #define PDTS_NOPENINFO 0x0100 #define PDTS_NOUPPOINTS 0x0200 #define PDTS_NOOEMDATA 0x0400 #define PDTS_NOCOLINEAR 0x0800 #define PDTS_COMPRESSED 0x8000 #define PDTS_COMPRESSMETHOD 0x00F0 #define PDTS_COMPRESS2NDDERIV 0x0010 #define PDTT_DEFAULT 0x0000 #define PDTT_PENINFO PDTS_NOPENINFO #define PDTT_UPPOINTS PDTS_NOUPPOINTS #define PDTT_OEMDATA PDTS_NOOEMDATA #define PDTT_COLINEAR PDTS_NOCOLINEAR #define PDTT_COMPRESS PDTS_COMPRESSED #define PDTT_DECOMPRESS 0x4000 #define PDTT_ALL (PDTT_PENINFO|PDTT_UPPOINTS|PDTT_OEMDATA|PDTT_COLINEAR) #define DestroyPenData(hpendata) (GlobalFree(hpendata)==NULL) #define EndEnumStrokes(hpendata) GlobalUnlock(hpendata) BOOL WINAPI IsPenEvent(UINT, LONG); BOOL WINAPI GetPenAsyncState(UINT); BOOL WINAPI GetPenDataInfo(HPENDATA, LPPENDATAHEADER, LPPENINFO, DWORD); BOOL WINAPI GetPenDataStroke(LPPENDATA, UINT, LPPOINT FAR *, LPVOID FAR *, LPSTROKEINFO ); BOOL WINAPI GetPointsFromPenData(HPENDATA, UINT, UINT, UINT, LPPOINT); VOID WINAPI DrawPenData(HDC, LPRECT, HPENDATA); BOOL WINAPI MetricScalePenData(HPENDATA, UINT); BOOL WINAPI ResizePenData(HPENDATA, LPRECT); BOOL WINAPI OffsetPenData(HPENDATA, int, int); BOOL WINAPI RedisplayPenData(HDC, HPENDATA, LPPOINT, LPPOINT, int, DWORD); HPENDATA WINAPI CompactPenData(HPENDATA, UINT ); HPENDATA WINAPI DuplicatePenData(HPENDATA, UINT); HPENDATA WINAPI CreatePenData(LPPENINFO, int, UINT, UINT); HPENDATA WINAPI AddPointsPenData(HPENDATA, LPPOINT, LPVOID, LPSTROKEINFO); LPPENDATA WINAPI BeginEnumStrokes(HPENDATA ); /****** New Windows Messages ************************************************/ #define WM_RCRESULT (WM_PENWINFIRST+1) #define WM_HOOKRCRESULT (WM_PENWINFIRST+2) #define WM_GLOBALRCCHANGE (WM_PENWINFIRST+3) #define WM_SKB (WM_PENWINFIRST+4) #define WM_HEDITCTL (WM_PENWINFIRST+5) /****** 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 BOOL WINAPI DictionarySearch(LPRC, LPSYE, int, LPSYV, int); /****** Handwriting Edit Control ********************************************/ #define HE_GETRC 3 #define HE_SETRC 4 #define HE_GETINFLATE 5 #define HE_SETINFLATE 6 #define HE_GETUNDERLINE 7 #define HE_SETUNDERLINE 8 #define HE_GETINKHANDLE 9 #define HE_SETINKMODE 10 #define HE_STOPINKMODE 11 #define HE_GETRCRESULTCODE 12 #define HE_DEFAULTFONT 13 #define HE_CHARPOSITION 14 #define HE_CHAROFFSET 15 #define HE_GETRCRESULT 22 #define HE_KKCONVERT 30 #define HE_GETKKCONVERT 31 #define HE_CANCELKKCONVERT 32 #define HE_FIXKKCONVERT 33 #define HEKK_DEFAULT 0 #define HEKK_CONVERT 1 #define HEKK_CANDIDATE 2 #define HEP_NORECOG 0 #define HEP_RECOG 1 #define HEP_WAITFORTAP 2 #define HN_ENDREC 4 #define HN_DELAYEDRECOGFAIL 5 #define HN_RCRESULT 20 #define HN_ENDKKCONVERT 30 typedef struct tagRECTOFS { int dLeft; int dTop; int dRight; int dBottom; } RECTOFS, FAR *LPRECTOFS; /****** Boxed Edit Control **************************************************/ typedef struct tagBOXLAYOUT { int cyCusp; int cyEndCusp; UINT style; DWORD rgbText; DWORD rgbBox; DWORD rgbSelect; } BOXLAYOUT, FAR *LPBOXLAYOUT; #define BXS_NONE 0U #define BXS_RECT 1U #define BXS_ENDTEXTMARK 2U #define BXS_MASK 3U #define HE_GETBOXLAYOUT 20 #define HE_SETBOXLAYOUT 21 #define BXD_CELLWIDTH 12 #define BXD_CELLHEIGHT 16 #define BXD_BASEHEIGHT 13 #define BXD_BASEHORZ 0 #define BXD_CUSPHEIGHT 2 #define BXD_ENDCUSPHEIGHT 4 /****** Screen Keyboard *****************************************************/ typedef struct tagSKBINFO { HWND hwnd; UINT nPad; BOOL fVisible; BOOL fMinimized; RECT rect; DWORD dwReserved; } SKBINFO, FAR *LPSKBINFO; #define SKB_QUERY 0x0000 #define SKB_SHOW 0x0001 #define SKB_HIDE 0x0002 #define SKB_CENTER 0x0010 #define SKB_MOVE 0x0020 #define SKB_MINIMIZE 0x0040 #define SKB_FULL 0x0100 #define SKB_BASIC 0x0200 #define SKB_NUMPAD 0x0400 #define OBM_SKBBTNUP 32767 #define OBM_SKBBTNDOWN 32766 #define OBM_SKBBTNDISABLED 32765 #define SKN_CHANGED 1 #define SKN_POSCHANGED 1 #define SKN_PADCHANGED 2 #define SKN_MINCHANGED 4 #define SKN_VISCHANGED 8 #define SKN_TERMINATED 0xffff BOOL WINAPI ShowKeyboard(HWND, UINT, LPPOINT, LPSKBINFO); /****** New ComboBox Notifications *****************************************/ #define CBN_ENDREC 16 #define CBN_DELAYEDRECOGFAIL 17 #define CBN_RCRESULT 18 #ifdef __cplusplus } #endif /* __cplusplus */ #ifndef RC_INVOKED #pragma pack() #endif /* RC_INVOKED */ #endif /* #define _INC_PENWIN */