Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

818 lines
25 KiB

/*****************************************************************************\
* *
* 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 */