819 lines
25 KiB
C
819 lines
25 KiB
C
|
/*****************************************************************************\
|
||
|
* *
|
||
|
* penwin.h - Pen Windows functions, types, and definitions *
|
||
|
* *
|
||
|
* Version 1.0 *
|
||
|
* *
|
||
|
* Copyright (c) 1992, Microsoft Corp. All rights reserved. *
|
||
|
* *
|
||
|
\*****************************************************************************/
|
||
|
|
||
|
#ifndef _INC_WINDOWS
|
||
|
#include <windows.h> /* <windows.h> 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 */
|