home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c083 / 14.ddi / GENINC.PAK / PENWIN.H < prev    next >
Encoding:
C/C++ Source or Header  |  1993-12-02  |  26.0 KB  |  832 lines

  1. /*****************************************************************************\
  2. *                                                                             *
  3. * penwin.h -    Pen Windows functions, types, and definitions                 *
  4. *                                                                             *
  5. \*****************************************************************************/
  6.  
  7. /*
  8.  *      C/C++ Run Time Library - Version 6.0
  9.  *
  10.  *      Copyright (c) 1987, 1993 by Borland International
  11.  *      All Rights Reserved.
  12.  *
  13.  */
  14.  
  15. #ifndef __PENWIN_H      /* prevent multiple includes */
  16. #define __PENWIN_H
  17.  
  18. #ifndef __WINDOWS_H
  19. #include <windows.h>    /* <windows.h> must be included */
  20. #endif  /* __WINDOWS_H */
  21.  
  22. #ifndef RC_INVOKED
  23. #pragma option -a-      /* Assume byte packing throughout */
  24. #endif /* RC_INVOKED */
  25.  
  26. #ifdef __cplusplus
  27. extern "C" {
  28. #endif  /* __cplusplus */
  29.  
  30. /* If included with the 3.0 windows.h, define compatible aliases */
  31. #if !defined(WINVER) || (WINVER < 0x030a)
  32. #define CALLBACK    FAR PASCAL
  33. #define UINT        WORD
  34. #define WINAPI      FAR PASCAL
  35. #define LPARAM      LONG
  36. #define WPARAM      WORD
  37. #endif  /* WIN3.0 */
  38.  
  39. /****** General Pen Windows Definitions *************************************/
  40.  
  41. typedef int                    REC;
  42. typedef LONG                   SYV;
  43. typedef SYV FAR                *LPSYV;
  44. typedef HANDLE                 HREC;
  45. typedef int                    CL;
  46. typedef LONG                   ALC;
  47. typedef UINT                   HKP;
  48. typedef int (CALLBACK * LPDF)(int, LPVOID, LPVOID, int, DWORD, DWORD);
  49.  
  50. #define BITPENUP               0x8000
  51. #define FPenUpX(x)             (((x) & BITPENUP)!=0)
  52.  
  53. /* Default pen cursor to indicate writing, points northwest */
  54. #define IDC_PEN                MAKEINTRESOURCE(32631)
  55.  
  56. /* alternate select cursor: upsidedown standard arrow, points southeast */
  57. #define IDC_ALTSELECT          MAKEINTRESOURCE(32501)
  58.  
  59. #define RC_WDEFAULT            (0xFFFF)
  60. #define RC_LDEFAULT            (0xFFFFFFFFL)
  61. #define RC_WDEFAULTFLAGS       (0x8000)
  62. #define RC_LDEFAULTFLAGS       (0x80000000L)
  63.  
  64. /* HIWORD(SYV) defines and detection macros */
  65.  
  66. #define SYVHI_SPECIAL          0
  67. #define FIsSpecial(syv)        (HIWORD((syv))==SYVHI_SPECIAL)
  68. #define SYVHI_ANSI             1
  69. #define FIsAnsi(syv)           (HIWORD((syv))==SYVHI_ANSI)
  70. #define SYVHI_GESTURE          2
  71. #define FIsGesture(syv)        (HIWORD((syv))==SYVHI_GESTURE)
  72. #define SYVHI_KANJI            3
  73. #define FIsKanji(syv)          (HIWORD((syv))==SYVHI_KANJI)
  74. #define SYVHI_SHAPE            4
  75. #define FIsShape(syv)          (HIWORD((syv))==SYVHI_SHAPE)
  76. #define SYVHI_UNICODE          5
  77. #define FIsUniCode(syv)        (HIWORD((syv))==SYVHI_UNICODE)
  78. #define SYVHI_VKEY             6
  79. #define FIsVKey(syv)           (HIWORD((syv))==SYVHI_VKEY)
  80.  
  81. /* Macros to convert between SYV and ANSI */
  82.  
  83. #define ChSyvToAnsi(syv)       ((BYTE) (LOBYTE(LOWORD((syv)))))
  84. #define SyvCharacterToSymbol(c) ((LONG)(unsigned char)(c) | 0x00010000)
  85. #define SyvKanjiToSymbol(c) ((LONG)(WORD)(c) | 0x00030000)
  86.  
  87. /* SYV values with special meanings to Pen Windows */
  88.  
  89. #define SYV_NULL               0x00000000L
  90. #define SYV_UNKNOWN            0x00000001L
  91. #define SYV_EMPTY              0x00000003L
  92. #define SYV_BEGINOR            0x00000010L
  93. #define SYV_ENDOR              0x00000011L
  94. #define SYV_OR                 0x00000012L
  95. #define SYV_SOFTNEWLINE        0x00000020L
  96. #define SYV_SPACENULL          SyvCharacterToSymbol('\0')
  97.  
  98. /* SYV values for gestures (map into UNICODE space) */
  99.  
  100. #define SYV_KKCONVERT          0x0002FFD4L
  101. #define SYV_CLEAR              0x0002FFD5L
  102. #define SYV_EXTENDSELECT       0x0002FFD8L
  103. #define SYV_UNDO               0x0002FFD9L
  104. #define SYV_COPY               0x0002FFDAL
  105. #define SYV_CUT                0x0002FFDBL
  106. #define SYV_PASTE              0x0002FFDCL
  107. #define SYV_CLEARWORD          0x0002FFDDL
  108. #define SYV_USER               0x0002FFDEL      /* ;Reserved */
  109. #define SYV_CORRECT            0x0002FFDFL
  110.  
  111. #define SYV_BACKSPACE          0x00020008L
  112. #define SYV_TAB                0x00020009L
  113. #define SYV_RETURN             0x0002000DL
  114. #define SYV_SPACE              0x00020020L
  115.  
  116. #define FIsStdGesture(syv)     \
  117.      ((syv) == SYV_CLEAR       \
  118.    || (syv) == SYV_EXTENDSELECT\
  119.    || (syv) == SYV_UNDO        \
  120.    || (syv) == SYV_COPY        \
  121.    || (syv) == SYV_CUT         \
  122.    || (syv) == SYV_PASTE       \
  123.    || (syv) == SYV_CLEARWORD   \
  124.    || (syv) == SYV_KKCONVERT   \
  125.    || (syv) == SYV_USER        \
  126.    || (syv) == SYV_CORRECT)
  127.  
  128. #define FIsAnsiGesture(syv)    \
  129.      ((syv) == SYV_BACKSPACE   \
  130.    || (syv) == SYV_TAB         \
  131.    || (syv) == SYV_RETURN      \
  132.    || (syv) == SYV_SPACE)
  133.  
  134. /* Application specific gestures, Circle a-z and Circle A-Z */
  135.  
  136. #define SYV_APPGESTUREMASK     0x00020000L
  137. #define SYV_CIRCLEUPA          0x000224B6L
  138. #define SYV_CIRCLEUPZ          0x000224CFL
  139. #define SYV_CIRCLELOA          0x000224D0L
  140. #define SYV_CIRCLELOZ          0x000224E9L
  141.  
  142. /* Gesture Macros */
  143.  
  144. #define FIsLoAppGesture(syv)   (syv >= SYV_CIRCLELOA && syv <= SYV_CIRCLELOZ)
  145. #define FIsUpAppGesture(syv)   (syv >= SYV_CIRCLEUPA && syv <= SYV_CIRCLEUPZ)
  146. #define FIsAppGesture(syv)     (syv>=SYV_CIRCLEUPA && syv<=SYV_CIRCLELOZ)
  147.  
  148. #define SyvAppGestureFromLoAnsi(ansi) ((DWORD)(BYTE)ansi- 'a' + SYV_CIRCLELOA)
  149. #define SyvAppGestureFromUpAnsi(ansi) ((DWORD)(BYTE)ansi- 'A' + SYV_CIRCLEUPA)
  150. #define AnsiFromSyvAppGesture(syv) ChSyvToAnsi( \
  151.     syv-(FIsUpAppGesture(syv)? SYV_CIRCLEUPA-(SYV)'A': SYV_CIRCLELOA-(SYV)'a'))
  152.  
  153. /* SYV definitions for shapes */
  154.  
  155. #define SYV_SHAPELINE          0x00040001L
  156. #define SYV_SHAPEELLIPSE       0x00040002L
  157. #define SYV_SHAPERECT          0x00040003L
  158. #define SYV_SHAPEMIN           SYV_SHAPELINE
  159. #define SYV_SHAPEMAX           SYV_SHAPERECT
  160.  
  161. /****** Recognition Error Codes *********************************************/
  162.  
  163. #define REC_OEM                (-1024)
  164. #define REC_LANGUAGE           (-48)
  165. #define REC_GUIDE              (-47)
  166. #define REC_PARAMERROR         (-46)
  167. #define REC_INVALIDREF         (-45)
  168. #define REC_RECTEXCLUDE        (-44)
  169. #define REC_RECTBOUND          (-43)
  170. #define REC_PCM                (-42)
  171. #define REC_RESULTMODE         (-41)
  172. #define REC_HWND               (-40)
  173. #define REC_ALC                (-39)
  174. #define REC_ERRORLEVEL         (-38)
  175. #define REC_CLVERIFY           (-37)
  176. #define REC_DICT               (-36)
  177. #define REC_HREC               (-35)
  178. #define REC_BADEVENTREF        (-33)
  179. #define REC_NOCOLLECTION       (-32)
  180.  
  181. #define REC_DEBUG              (-32)
  182.  
  183. #define REC_POINTEREVENT       (-31)
  184. #define REC_BADHPENDATA        (-9)
  185. #define REC_OOM                (-8)
  186. #define REC_NOINPUT            (-7)
  187. #define REC_NOTABLET           (-6)
  188. #define REC_BUSY               (-5)
  189. #define REC_BUFFERTOOSMALL     (-4)
  190. #define REC_ABORT              (-3)
  191.  
  192. #define REC_OVERFLOW           (-1)
  193.  
  194. #define REC_OK                 0
  195. #define REC_TERMBOUND          1
  196. #define REC_TERMEX             2
  197. #define REC_TERMPENUP          3
  198. #define REC_TERMRANGE          4
  199. #define REC_TERMTIMEOUT        5
  200. #define REC_DONE               6
  201. #define REC_TERMOEM            512
  202.  
  203. /****** Pen Driver Structures and Entry points ******************************/
  204.  
  205. typedef struct tagOEMPENINFO
  206.    {
  207.    UINT wPdt;
  208.    UINT wValueMax;
  209.    UINT wDistinct;
  210.    }
  211.    OEMPENINFO, FAR *LPOEMPENINFO;
  212.  
  213. #define PDT_NULL               0
  214. #define PDT_PRESSURE           1
  215. #define PDT_HEIGHT             2
  216. #define PDT_ANGLEXY            3
  217. #define PDT_ANGLEZ             4
  218. #define PDT_BARRELROTATION     5
  219. #define PDT_OEMSPECIFIC        16
  220.  
  221. #define MAXOEMDATAWORDS        6
  222.  
  223. typedef struct tagPENPACKET
  224.    {
  225.    UINT wTabletX;
  226.    UINT wTabletY;
  227.    UINT wPDK;
  228.    UINT rgwOemData[MAXOEMDATAWORDS];
  229.    }
  230.    PENPACKET, FAR *LPPENPACKET;
  231.  
  232. typedef BOOL (CALLBACK * LPFNRAWHOOK)(LPPENPACKET);
  233.  
  234. typedef struct tagPENINFO
  235.    {
  236.    UINT cxRawWidth;
  237.    UINT cyRawHeight;
  238.    UINT wDistinctWidth;
  239.    UINT wDistinctHeight;
  240.    int nSamplingRate;
  241.    int nSamplingDist;
  242.    LONG lPdc;
  243.    int cPens;
  244.    int cbOemData;
  245.    OEMPENINFO rgoempeninfo[MAXOEMDATAWORDS];
  246.    UINT rgwReserved[8];
  247.    }
  248.    PENINFO, FAR *LPPENINFO;
  249.  
  250. #define PDC_INTEGRATED         0x00000001L
  251. #define PDC_PROXIMITY          0x00000002L
  252. #define PDC_RANGE              0x00000004L
  253. #define PDC_INVERT             0x00000008L
  254. #define PDC_RELATIVE           0x00000010L
  255. #define PDC_BARREL1            0x00000020L
  256. #define PDC_BARREL2            0x00000040L
  257. #define PDC_BARREL3            0x00000080L
  258.  
  259. typedef struct tagSTROKEINFO
  260.    {
  261.    UINT cPnt;
  262.    UINT cbPnts;
  263.    UINT wPdk;
  264.    DWORD dwTick;
  265.    }
  266.    STROKEINFO, FAR *LPSTROKEINFO;
  267.  
  268. typedef struct tagCALBSTRUCT
  269.    {
  270.    int wOffsetX;
  271.    int wOffsetY;
  272.    int wDistinctWidth;
  273.    int wDistinctHeight;
  274.    }
  275.    CALBSTRUCT, FAR *LPCALBSTRUCT;
  276.  
  277. /****** DRV_ values for pen driver specific messages ************************/
  278.  
  279. #define DRV_SetPenDriverEntryPoints    DRV_RESERVED+1
  280. #define DRV_RemovePenDriverEntryPoints DRV_RESERVED+2
  281. #define DRV_SetPenSamplingRate         DRV_RESERVED+3
  282. #define DRV_SetPenSamplingDist         DRV_RESERVED+4
  283. #define DRV_GetName                    DRV_RESERVED+5
  284. #define DRV_GetVersion                 DRV_RESERVED+6
  285. #define DRV_GetPenInfo                 DRV_RESERVED+7
  286. #define DRV_GetCalibration             DRV_RESERVED+11
  287. #define DRV_SetCalibration             DRV_RESERVED+12
  288.  
  289. VOID WINAPI UpdatePenInfo(LPPENINFO);
  290. BOOL WINAPI EndPenCollection(REC);
  291. REC  WINAPI GetPenHwData(LPPOINT, LPVOID, int, UINT, LPSTROKEINFO);
  292. REC  WINAPI GetPenHwEventData(UINT, UINT, LPPOINT, LPVOID, int, LPSTROKEINFO);
  293. VOID WINAPI PenPacket(VOID);
  294. BOOL WINAPI SetPenHook(HKP, LPFNRAWHOOK);
  295.  
  296. /****** Pen Hardware Constants **********************************************/
  297.  
  298. #define PDK_UP                 0x0000
  299. #define PDK_DOWN               0x0001
  300. #define PDK_BARREL1            0x0002
  301. #define PDK_BARREL2            0x0004
  302. #define PDK_BARREL3            0x0008
  303. #define PDK_TRANSITION         0x0010
  304. #define PDK_INVERTED           0x0080
  305. #define PDK_OUTOFRANGE         0x4000
  306. #define PDK_DRIVER             0x8000
  307. #define PDK_TIPMASK            0x0001
  308. #define PDK_SWITCHES           (PDK_DOWN|PDK_BARREL1|PDK_BARREL2|PDK_BARREL3)
  309.  
  310. #define PCM_PENUP              0x00000001L
  311. #define PCM_RANGE              0x00000002L
  312. #define PCM_INVERT             0x00000020L
  313. #define PCM_RECTEXCLUDE        0x00002000L
  314. #define PCM_RECTBOUND          0x00004000L
  315. #define PCM_TIMEOUT            0x00008000L
  316. #define PCM_ADDDEFAULTS        RC_LDEFAULTFLAGS /* 0x80000000L */
  317.  
  318. /****** Virtual Event Layer *************************************************/
  319.  
  320. VOID WINAPI PostVirtualKeyEvent(UINT, BOOL);
  321. VOID WINAPI PostVirtualMouseEvent(UINT, int, int);
  322. VOID WINAPI AtomicVirtualEvent(BOOL);
  323.  
  324. #define VWM_MOUSEMOVE          0x0001
  325. #define VWM_MOUSELEFTDOWN      0x0002
  326. #define VWM_MOUSELEFTUP        0x0004
  327. #define VWM_MOUSERIGHTDOWN     0x0008
  328. #define VWM_MOUSERIGHTUP       0x0010
  329.  
  330. /****** RC Definition *************************************************************/
  331.  
  332. #define CL_NULL                0
  333. #define CL_MINIMUM             1
  334. #define CL_MAXIMUM             100
  335. #define INKWIDTH_MINIMUM       0
  336. #define INKWIDTH_MAXIMUM       15
  337. #define ENUM_MINIMUM           1
  338. #define ENUM_MAXIMUM           4096
  339. #define MAXDICTIONARIES        16
  340.  
  341. typedef struct tagGUIDE
  342.    {
  343.    int xOrigin;
  344.    int yOrigin;
  345.    int cxBox;
  346.    int cyBox;
  347.    int cxBase;
  348.    int cyBase;
  349.    int cHorzBox;
  350.    int cVertBox;
  351.    int cyMid;
  352.    }
  353.    GUIDE, FAR *LPGUIDE;
  354.  
  355. typedef BOOL (CALLBACK * RCYIELDPROC)(VOID);
  356.  
  357. #define cbRcLanguageMax        44
  358. #define cbRcUserMax            32
  359. #define cbRcrgbfAlcMax         32
  360. #define cwRcReservedMax        8
  361.  
  362. typedef struct tagRC
  363.    {
  364.    HREC hrec;
  365.    HWND hwnd;
  366.    UINT wEventRef;
  367.    UINT wRcPreferences;
  368.    LONG lRcOptions;
  369.    RCYIELDPROC lpfnYield;
  370.    BYTE lpUser[cbRcUserMax];
  371.    UINT wCountry;
  372.    UINT wIntlPreferences;
  373.    char lpLanguage[cbRcLanguageMax];
  374.    LPDF rglpdf[MAXDICTIONARIES];
  375.    UINT wTryDictionary;
  376.    CL clErrorLevel;
  377.    ALC alc;
  378.    ALC alcPriority;
  379.    BYTE rgbfAlc[cbRcrgbfAlcMax];
  380.    UINT wResultMode;
  381.    UINT wTimeOut;
  382.    LONG lPcm;
  383.    RECT rectBound;
  384.    RECT rectExclude;
  385.    GUIDE guide;
  386.    UINT wRcOrient;
  387.    UINT wRcDirect;
  388.    int nInkWidth;
  389.    COLORREF rgbInk;
  390.    DWORD dwAppParam;
  391.    DWORD dwDictParam;
  392.    DWORD dwRecognizer;
  393.    UINT rgwReserved[cwRcReservedMax];
  394.    }
  395.    RC, FAR *LPRC;
  396.  
  397. typedef HANDLE HPENDATA;
  398.  
  399. typedef struct tagSYC
  400.    {
  401.    UINT wStrokeFirst;
  402.    UINT wPntFirst;
  403.    UINT wStrokeLast;
  404.    UINT wPntLast;
  405.    BOOL fLastSyc;
  406.    }
  407.    SYC, FAR *LPSYC;
  408.  
  409. #define wPntAll                (UINT)0xFFFF
  410. #define iSycNull               (-1)
  411.  
  412. typedef struct tagSYE
  413.    {
  414.    SYV syv;
  415.    LONG lRecogVal;
  416.    CL cl;
  417.    int iSyc;
  418.    }
  419.    SYE, FAR *LPSYE;
  420.  
  421. #define MAXHOTSPOT             8
  422.  
  423. typedef struct tagSYG
  424.    {
  425.    POINT rgpntHotSpots[MAXHOTSPOT];
  426.    int cHotSpot;
  427.    int nFirstBox;
  428.    LONG lRecogVal;
  429.    LPSYE lpsye;
  430.    int cSye;
  431.    LPSYC lpsyc;
  432.    int cSyc;
  433.    }
  434.    SYG, FAR *LPSYG;
  435.  
  436. typedef int (CALLBACK *ENUMPROC)(LPSYV, int, VOID FAR *);
  437.  
  438. typedef struct tagRCRESULT
  439.    {
  440.    SYG syg;
  441.    UINT wResultsType;
  442.    int cSyv;
  443.    LPSYV lpsyv;
  444.    HANDLE hSyv;
  445.    int nBaseLine;
  446.    int nMidLine;
  447.    HPENDATA hpendata;
  448.    RECT rectBoundInk;
  449.    POINT pntEnd;
  450.    LPRC lprc;
  451.    }
  452.    RCRESULT, FAR *LPRCRESULT;
  453.  
  454. #define RCRT_DEFAULT           0x0000
  455. #define RCRT_UNIDENTIFIED      0x0001
  456. #define RCRT_GESTURE           0x0002
  457. #define RCRT_NOSYMBOLMATCH     0x0004
  458. #define RCRT_PRIVATE           0x4000
  459. #define RCRT_NORECOG           0x8000
  460. #define RCRT_ALREADYPROCESSED  0x0008
  461. #define RCRT_GESTURETRANSLATED 0x0010
  462. #define RCRT_GESTURETOKEYS     0x0020
  463.  
  464. #define HKP_SETHOOK            0
  465. #define HKP_UNHOOK             0xFFFF
  466. #define HWR_RESULTS            0
  467. #define HWR_APPWIDE            1
  468.  
  469. #define PEN_NOINKWIDTH         0
  470. #define LPDFNULL               ((LPDF)NULL)
  471.  
  472. #define RPA_DEFAULT            1
  473.  
  474. /* GetGlobalRC return codes */
  475. #define GGRC_OK                0
  476. #define GGRC_DICTBUFTOOSMALL   1
  477. #define GGRC_PARAMERROR        2
  478.  
  479. /* SetGlobalRC return code flags */
  480. #define SGRC_OK                0x0000
  481. #define SGRC_USER              0x0001
  482. #define SGRC_PARAMERROR        0x0002
  483. #define SGRC_RC                0x0004
  484. #define SGRC_RECOGNIZER        0x0008
  485. #define SGRC_DICTIONARY        0x0010
  486. #define SGRC_INIFILE           0x0020
  487.  
  488. #define GetWEventRef()         (LOWORD(GetMessageExtraInfo()))
  489.  
  490. HREC WINAPI InstallRecognizer(LPSTR);
  491. VOID WINAPI UninstallRecognizer(HREC);
  492. UINT WINAPI GetGlobalRC(LPRC, LPSTR, LPSTR, int);
  493. UINT WINAPI SetGlobalRC(LPRC, LPSTR, LPSTR);
  494. VOID WINAPI RegisterPenApp(UINT, BOOL);
  495. UINT WINAPI IsPenAware(VOID);
  496. BOOL WINAPI SetRecogHook(UINT, UINT, HWND);
  497. VOID WINAPI InitRC(HWND, LPRC);
  498. REC  WINAPI Recognize(LPRC);
  499. REC  WINAPI RecognizeData(LPRC, HPENDATA);
  500. BOOL WINAPI TrainInk(LPRC, HPENDATA, LPSYV);
  501. BOOL WINAPI TrainContext(LPRCRESULT, LPSYE, int, LPSYC, int);
  502. REC  WINAPI ProcessWriting(HWND, LPRC);
  503. BOOL WINAPI CorrectWriting(HWND, LPSTR, UINT, LPRC, DWORD, DWORD);
  504. VOID WINAPI EmulatePen(BOOL);
  505. int  WINAPI GetSymbolMaxLength(LPSYG);
  506. int  WINAPI GetSymbolCount(LPSYG);
  507. VOID WINAPI FirstSymbolFromGraph(LPSYG, LPSYV, int, int FAR *);
  508. UINT WINAPI EnumSymbols(LPSYG, WORD, ENUMPROC, LPVOID);
  509.  
  510. /****** Miscellaneous Functions *********************************************/
  511.  
  512. BOOL WINAPI TPtoDP(LPPOINT, int);
  513. BOOL WINAPI DPtoTP(LPPOINT, int);
  514. VOID WINAPI BoundingRectFromPoints(LPPOINT, int, LPRECT);
  515. BOOL WINAPI SymbolToCharacter(LPSYV, int, LPSTR, LPINT);
  516. int  WINAPI CharacterToSymbol(LPSTR, int, LPSYV);
  517. UINT WINAPI GetVersionPenWin(VOID);
  518. BOOL WINAPI ExecuteGesture(HWND, SYV, LPRCRESULT);
  519.  
  520. /****** RC Options and Flags  ***********************************************/
  521.  
  522. #define ALC_ALL                0x000043FFL
  523. #define ALC_DEFAULT            0x00000000L
  524. #define ALC_LCALPHA            0x00000001L
  525. #define ALC_UCALPHA            0x00000002L
  526. #define ALC_ALPHA              0x00000003L
  527. #define ALC_NUMERIC            0x00000004L
  528. #define ALC_ALPHANUMERIC       0x00000007L
  529. #define ALC_PUNC               0x00000008L
  530. #define ALC_MATH               0x00000010L
  531. #define ALC_MONETARY           0x00000020L
  532. #define ALC_OTHER              0x00000040L
  533. #define ALC_WHITE              0x00000100L
  534. #define ALC_NONPRINT           0x00000200L
  535. #define ALC_GESTURE            0x00004000L
  536. #define ALC_USEBITMAP          0x00008000L
  537. #define ALC_DBCS               0x00000400L
  538. #define ALC_HIRAGANA           0x00010000L
  539. #define ALC_KATAKANA           0x00020000L
  540. #define ALC_KANJI              0x00040000L
  541. #define ALC_OEM                0x0FF80000L
  542. #define ALC_RESERVED           0xF0003800L
  543. #define ALC_NOPRIORITY         0x00000000L
  544. #define ALC_SYSMINIMUM (ALC_ALPHANUMERIC | ALC_PUNC | ALC_WHITE | ALC_GESTURE)
  545.  
  546. #define MpAlcB(lprc,i) ((lprc)->rgbfAlc[((i) & 0xff) >> 3])
  547. #define MpIbf(i)       ((BYTE)(1 << ((i) & 7)))
  548.  
  549. #define SetAlcBitAnsi(lprc,i)      do {MpAlcB(lprc,i) |= MpIbf(i);} while (0)
  550. #define ResetAlcBitAnsi(lprc,i)    do {MpAlcB(lprc,i) &= ~MpIbf(i);} while (0)
  551. #define IsAlcBitAnsi(lprc, i)      ((MpAlcB(lprc,i) & MpIbf(i)) != 0)
  552.  
  553. #define RCD_DEFAULT            0
  554. #define RCD_LR                 1
  555. #define RCD_RL                 2
  556. #define RCD_TB                 3
  557. #define RCD_BT                 4
  558.  
  559. #define RCO_NOPOINTEREVENT     0x00000001L
  560. #define RCO_SAVEALLDATA        0x00000002L
  561. #define RCO_SAVEHPENDATA       0x00000004L
  562. #define RCO_NOFLASHUNKNOWN     0x00000008L
  563. #define RCO_TABLETCOORD        0x00000010L
  564. #define RCO_NOSPACEBREAK       0x00000020L
  565. #define RCO_NOHIDECURSOR       0x00000040L
  566. #define RCO_NOHOOK             0x00000080L
  567. #define RCO_BOXED              0x00000100L
  568. #define RCO_SUGGEST            0x00000200L
  569. #define RCO_DISABLEGESMAP      0x00000400L
  570. #define RCO_NOFLASHCURSOR      0x00000800L
  571. #define RCO_COLDRECOG          0x00008000L
  572.  
  573. #define RCP_LEFTHAND           0x0001
  574. #define RCP_MAPCHAR            0x0004
  575.  
  576. #define RCOR_NORMAL            1
  577. #define RCOR_RIGHT             2
  578. #define RCOR_UPSIDEDOWN        3
  579. #define RCOR_LEFT              4
  580.  
  581. #define RRM_STROKE             0
  582. #define RRM_SYMBOL             1
  583. #define RRM_WORD               2
  584. #define RRM_NEWLINE            3
  585. #define RRM_COMPLETE           16
  586.  
  587. #define RCIP_ALLANSICHAR       0x0001
  588. #define RCIP_MASK              0x0001
  589.  
  590. #define CWR_STRIPCR            0x00000001L
  591. #define CWR_STRIPLF            0x00000002L
  592. #define CWR_STRIPTAB           0x00000004L
  593. #define CWR_SINGLELINEEDIT     0x00000007L
  594. #define CWR_TITLE              0x00000010L
  595. #define CWR_KKCONVERT          0x00000020L
  596.  
  597. #define MAP_GESTOGES                            (RCRT_GESTURE|RCRT_GESTURETRANSLATED)
  598. #define MAP_GESTOVKEYS                  (RCRT_GESTURETOKEYS|RCRT_ALREADYPROCESSED)
  599.  
  600. #define IsGestureToGesture(lprcresult)  (((lprcresult)->wResultstype & MAP_GESTOGES \
  601.                                                                                                          ) == MAP_GESTOGES)
  602.  
  603. #define IsGestureToVkeys(lprcresult)    (((lprcresult)->wResultstype & MAP_GESTOVKEYS \
  604.                                                                                                          ) == MAP_GESTOVKEYS)
  605.  
  606. #define SetAlreadyProcessed(lprcresult) ((lprcresult)->wResultsType = ((lprcresult)->wResultsType \
  607.                                                                                                                 & ~RCRT_GESTURETOKEYS) | RCRT_ALREADYPROCESSED)
  608.  
  609. /****** Pen Data Type *******************************************************/
  610.  
  611. typedef struct tagPENDATAHEADER
  612.    {
  613.    UINT wVersion;
  614.    UINT cbSizeUsed;
  615.    UINT cStrokes;
  616.    UINT cPnt;
  617.    UINT cPntStrokeMax;
  618.    RECT rectBound;
  619.    UINT wPndts;
  620.    int  nInkWidth;
  621.    DWORD rgbInk;
  622.    }
  623.    PENDATAHEADER, FAR *LPPENDATAHEADER, FAR *LPPENDATA;
  624.  
  625. #define PDTS_LOMETRIC          0x0000
  626. #define PDTS_HIMETRIC          0x0001
  627. #define PDTS_HIENGLISH         0x0002
  628. #define PDTS_SCALEMAX          0x0003
  629. #define PDTS_DISPLAY           0x0003
  630. #define PDTS_ARBITRARY         0x0004
  631. #define PDTS_SCALEMASK         0x000F
  632. #define PDTS_STANDARDSCALE     PDTS_HIENGLISH
  633.  
  634. #define PDTS_NOPENINFO         0x0100
  635. #define PDTS_NOUPPOINTS        0x0200
  636. #define PDTS_NOOEMDATA         0x0400
  637. #define PDTS_NOCOLINEAR        0x0800
  638. #define PDTS_COMPRESSED        0x8000
  639. #define PDTS_COMPRESSMETHOD    0x00F0
  640. #define PDTS_COMPRESS2NDDERIV  0x0010
  641.  
  642. #define PDTT_DEFAULT           0x0000
  643. #define PDTT_PENINFO           PDTS_NOPENINFO
  644. #define PDTT_UPPOINTS          PDTS_NOUPPOINTS
  645. #define PDTT_OEMDATA           PDTS_NOOEMDATA
  646. #define PDTT_COLINEAR          PDTS_NOCOLINEAR
  647. #define PDTT_COMPRESS          PDTS_COMPRESSED
  648. #define PDTT_DECOMPRESS        0x4000
  649. #define PDTT_ALL (PDTT_PENINFO|PDTT_UPPOINTS|PDTT_OEMDATA|PDTT_COLINEAR)
  650.  
  651. #define DestroyPenData(hpendata) (GlobalFree(hpendata)==NULL)
  652. #define EndEnumStrokes(hpendata) GlobalUnlock(hpendata)
  653.  
  654. BOOL WINAPI IsPenEvent(UINT, LONG);
  655. BOOL WINAPI GetPenAsyncState(UINT);
  656.  
  657. BOOL WINAPI GetPenDataInfo(HPENDATA, LPPENDATAHEADER, LPPENINFO, DWORD);
  658. BOOL WINAPI GetPenDataStroke(LPPENDATA, UINT, LPPOINT FAR *, LPVOID FAR *, LPSTROKEINFO );
  659. BOOL WINAPI GetPointsFromPenData(HPENDATA, UINT, UINT, UINT, LPPOINT);
  660. VOID WINAPI DrawPenData(HDC, LPRECT, HPENDATA);
  661. BOOL WINAPI MetricScalePenData(HPENDATA, UINT);
  662. BOOL WINAPI ResizePenData(HPENDATA, LPRECT);
  663. BOOL WINAPI OffsetPenData(HPENDATA, int, int);
  664. BOOL WINAPI RedisplayPenData(HDC, HPENDATA, LPPOINT, LPPOINT, int, DWORD);
  665. HPENDATA  WINAPI CompactPenData(HPENDATA, UINT );
  666. HPENDATA  WINAPI DuplicatePenData(HPENDATA, UINT);
  667. HPENDATA  WINAPI CreatePenData(LPPENINFO, int, UINT, UINT);
  668. HPENDATA  WINAPI AddPointsPenData(HPENDATA, LPPOINT, LPVOID, LPSTROKEINFO);
  669. LPPENDATA WINAPI BeginEnumStrokes(HPENDATA );
  670.  
  671. /****** New Windows Messages ************************************************/
  672.  
  673. #define WM_RCRESULT            (WM_PENWINFIRST+1)
  674. #define WM_HOOKRCRESULT        (WM_PENWINFIRST+2)
  675. #define WM_GLOBALRCCHANGE      (WM_PENWINFIRST+3)
  676. #define WM_SKB                 (WM_PENWINFIRST+4)
  677. #define WM_HEDITCTL            (WM_PENWINFIRST+5)
  678.  
  679. /****** Dictionary **********************************************************/
  680.  
  681. #define cbDictPathMax          255
  682. #define DIRQ_QUERY             1
  683. #define DIRQ_DESCRIPTION       2
  684. #define DIRQ_CONFIGURE         3
  685. #define DIRQ_OPEN              4
  686. #define DIRQ_CLOSE             5
  687. #define DIRQ_SETWORDLISTS      6
  688. #define DIRQ_STRING            7
  689. #define DIRQ_SUGGEST           8
  690. #define DIRQ_ADD               9
  691. #define DIRQ_DELETE            10
  692. #define DIRQ_FLUSH             11
  693. #define DIRQ_RCCHANGE          12
  694. #define DIRQ_SYMBOLGRAPH       13
  695. #define DIRQ_INIT              14
  696. #define DIRQ_CLEANUP           15
  697. #define DIRQ_COPYRIGHT         16
  698.  
  699.  
  700. #define DIRQ_USER              4096
  701.  
  702. BOOL WINAPI DictionarySearch(LPRC, LPSYE, int, LPSYV, int);
  703.  
  704. /****** Handwriting Edit Control ********************************************/
  705.  
  706. #define HE_GETRC               3
  707. #define HE_SETRC               4
  708. #define HE_GETINFLATE          5
  709. #define HE_SETINFLATE          6
  710. #define HE_GETUNDERLINE        7
  711. #define HE_SETUNDERLINE        8
  712. #define HE_GETINKHANDLE        9
  713. #define HE_SETINKMODE          10
  714. #define HE_STOPINKMODE         11
  715. #define HE_GETRCRESULTCODE     12
  716. #define HE_DEFAULTFONT         13
  717. #define HE_CHARPOSITION        14
  718. #define HE_CHAROFFSET          15
  719.  
  720. #define HE_GETRCRESULT         22
  721.  
  722. #define HE_KKCONVERT           30
  723. #define HE_GETKKCONVERT        31
  724. #define HE_CANCELKKCONVERT     32
  725. #define HE_FIXKKCONVERT        33
  726.  
  727. #define HEKK_DEFAULT           0
  728. #define HEKK_CONVERT           1
  729. #define HEKK_CANDIDATE         2
  730.  
  731. #define HEP_NORECOG            0
  732. #define HEP_RECOG              1
  733. #define HEP_WAITFORTAP         2
  734.  
  735. #define HN_ENDREC              4
  736. #define HN_DELAYEDRECOGFAIL    5
  737.  
  738. #define HN_RCRESULT            20
  739.  
  740. #define HN_ENDKKCONVERT        30
  741.  
  742. typedef struct tagRECTOFS
  743.    {
  744.    int dLeft;
  745.    int dTop;
  746.    int dRight;
  747.    int dBottom;
  748.    }
  749.    RECTOFS, FAR *LPRECTOFS;
  750.  
  751. /****** Boxed Edit Control **************************************************/
  752.  
  753. typedef struct tagBOXLAYOUT
  754.    {
  755.    int cyCusp;
  756.    int cyEndCusp;
  757.    UINT style;
  758.    DWORD rgbText;
  759.    DWORD rgbBox;
  760.    DWORD rgbSelect;
  761.    }
  762.    BOXLAYOUT, FAR *LPBOXLAYOUT;
  763.  
  764. #define BXS_NONE               0U
  765. #define BXS_RECT               1U
  766. #define BXS_ENDTEXTMARK        2U
  767. #define BXS_MASK               3U
  768.  
  769. #define HE_GETBOXLAYOUT        20
  770. #define HE_SETBOXLAYOUT        21
  771.  
  772. #define BXD_CELLWIDTH          12
  773. #define BXD_CELLHEIGHT         16
  774. #define BXD_BASEHEIGHT         13
  775. #define BXD_BASEHORZ           0
  776. #define BXD_CUSPHEIGHT         2
  777. #define BXD_ENDCUSPHEIGHT      4
  778.  
  779. /****** Screen Keyboard *****************************************************/
  780.  
  781. typedef struct tagSKBINFO
  782.    {
  783.    HWND hwnd;
  784.    UINT nPad;
  785.    BOOL fVisible;
  786.    BOOL fMinimized;
  787.    RECT rect;
  788.    DWORD dwReserved;
  789.    }
  790.    SKBINFO, FAR *LPSKBINFO;
  791.  
  792. #define SKB_QUERY              0x0000
  793. #define SKB_SHOW               0x0001
  794. #define SKB_HIDE               0x0002
  795. #define SKB_CENTER             0x0010
  796. #define SKB_MOVE               0x0020
  797. #define SKB_MINIMIZE           0x0040
  798. #define SKB_FULL               0x0100
  799. #define SKB_BASIC              0x0200
  800. #define SKB_NUMPAD             0x0400
  801.  
  802. #define OBM_SKBBTNUP           32767
  803. #define OBM_SKBBTNDOWN         32766
  804. #define OBM_SKBBTNDISABLED     32765
  805.  
  806. #define SKN_CHANGED            1
  807.  
  808. #define SKN_POSCHANGED         1
  809. #define SKN_PADCHANGED         2
  810. #define SKN_MINCHANGED         4
  811. #define SKN_VISCHANGED         8
  812. #define SKN_TERMINATED         0xffff
  813.  
  814. BOOL WINAPI ShowKeyboard(HWND, UINT, LPPOINT, LPSKBINFO);
  815.  
  816. /****** New ComboBox Notifications  *****************************************/
  817.  
  818. #define CBN_ENDREC             16
  819. #define CBN_DELAYEDRECOGFAIL   17
  820. #define CBN_RCRESULT           18
  821.  
  822.  
  823. #ifdef __cplusplus
  824. }                       /* End of extern "C" { */
  825. #endif  /* __cplusplus */
  826.  
  827. #ifndef RC_INVOKED
  828. #pragma option -a.      /* Revert to default packing */
  829. #endif  /* RC_INVOKED */
  830.  
  831. #endif  /* __PENWIN_H */
  832.