home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1997 May / Pcwk0597.iso / borland / cb / setup / cbuilder / data.z / IME.H < prev    next >
C/C++ Source or Header  |  1997-02-28  |  8KB  |  301 lines

  1. /*++ BUILD Version: 0003    // Increment this if a change has global effects
  2.  
  3. Copyright (c) 1985-1996, Microsoft Corporation
  4.  
  5. Module Name:
  6.  
  7.     ime.h
  8.  
  9. Abstract:
  10.  
  11.     Procedure declarations, constant definitions and macros for the IME
  12.     component.
  13.  
  14. --*/
  15.  
  16. #ifndef _IME_
  17. #define _IME_
  18. #pragma option -b
  19.  
  20. #ifdef __cplusplus
  21. extern "C" {
  22. #endif /* __cplusplus */
  23.  
  24. #ifdef __BORLANDC__
  25. #pragma option -b.
  26.   #include <pshpack8.h>
  27. #pragma option -b
  28. #endif
  29.  
  30. #ifndef _WINDEF_
  31. typedef unsigned int UINT;
  32. #endif // _WINDEF_
  33.  
  34. #define IME_MAXPROCESS 32
  35.  
  36. LRESULT WINAPI SendIMEMessageExA(HWND, LPARAM);
  37. LRESULT WINAPI SendIMEMessageExW(HWND, LPARAM);
  38. #ifdef UNICODE
  39. #define SendIMEMessageEx  SendIMEMessageExW
  40. #else
  41. #define SendIMEMessageEx  SendIMEMessageExA
  42. #endif // !UNICODE
  43.  
  44. //
  45. // IMESTRUCT structure for SendIMEMessageEx
  46. //
  47. typedef struct tagIMESTRUCT {
  48.     UINT     fnc;        // function code
  49.     WPARAM   wParam;     // word parameter
  50.     UINT     wCount;     // word counter
  51.     UINT     dchSource;  // offset to Source from top of memory object
  52.     UINT     dchDest;    // offset to Desrination from top of memory object
  53.     LPARAM   lParam1;
  54.     LPARAM   lParam2;
  55.     LPARAM   lParam3;
  56. } IMESTRUCT,*PIMESTRUCT,NEAR *NPIMESTRUCT,FAR *LPIMESTRUCT;
  57.  
  58.  
  59.  
  60. #ifdef KOREA     // BeomOh - 10/05/92
  61. #define CP_HWND                 0
  62. #define CP_OPEN                 1
  63. #define CP_DIRECT               2
  64. #define CP_LEVEL                3
  65.  
  66. #define lpSource(lpks) (LPSTR)((LPSTR)lpks+lpks->dchSource)
  67. #define lpDest(lpks)   (LPSTR)((LPSTR)lpks+lpks->dchDest)
  68. #endif // KOREA
  69.  
  70. //
  71. //      Virtual Keys
  72. //
  73. #ifdef KOREA    // BeomOh - 9/29/92
  74. #define VK_FINAL        0x18    /* dummy VK to make final on mouse down */
  75. #define VK_CONVERT      0x1C
  76. #define VK_NONCONVERT   0x1D
  77. #define VK_ACCEPT       0x1E
  78. #define VK_MODECHANGE   0x1F
  79. #else // KOREA
  80. #define VK_KANA         0x15
  81. #define VK_KANJI        0x19
  82.  
  83. #define VK_CONVERT      0x1C
  84. #define VK_NONCONVERT   0x1D
  85. #define VK_ACCEPT       0x1E
  86. #define VK_MODECHANGE   0x1F
  87.  
  88. #define VK_DBE_ALPHANUMERIC              0x0f0
  89. #define VK_DBE_KATAKANA                  0x0f1
  90. #define VK_DBE_HIRAGANA                  0x0f2
  91. #define VK_DBE_SBCSCHAR                  0x0f3
  92. #define VK_DBE_DBCSCHAR                  0x0f4
  93. #define VK_DBE_ROMAN                     0x0f5
  94. #define VK_DBE_NOROMAN                   0x0f6
  95. #define VK_DBE_ENTERWORDREGISTERMODE     0x0f7
  96. #define VK_DBE_ENTERIMECONFIGMODE        0x0f8
  97. #define VK_DBE_FLUSHSTRING               0x0f9
  98. #define VK_DBE_CODEINPUT                 0x0fa
  99. #define VK_DBE_NOCODEINPUT               0x0fb
  100. #define VK_DBE_DETERMINESTRING           0x0fc
  101. #define VK_DBE_ENTERDLGCONVERSIONMODE    0x0fd
  102. #endif // KOREA
  103.  
  104.  
  105. //
  106. //     switch for wParam of IME_SETCONVERSIONWINDOW
  107. //
  108. #define MCW_DEFAULT             0x00
  109. #define MCW_RECT                0x01
  110. #define MCW_WINDOW              0x02
  111. #define MCW_SCREEN              0x04
  112. #define MCW_VERTICAL            0x08
  113. #define MCW_HIDDEN              0x10
  114.  
  115. //
  116. //    switch for wParam of IME_SETCONVERSIONMODE
  117. //       and IME_GETCONVERSIONMODE
  118. //
  119. #define IME_MODE_ALPHANUMERIC   0x0001
  120. #ifdef KOREA    // BeomOh - 9/29/92
  121. #define IME_MODE_SBCSCHAR       0x0002
  122. #define IME_MODE_HANJACONVERT   0x0004
  123. #else  // !KOREA
  124. #define IME_MODE_KATAKANA       0x0002
  125. #define IME_MODE_HIRAGANA       0x0004
  126. #define IME_MODE_SBCSCHAR       0x0008
  127. #define IME_MODE_DBCSCHAR       0x0010
  128. #define IME_MODE_ROMAN          0x0020
  129. #define IME_MODE_NOROMAN        0x0040
  130. #define IME_MODE_CODEINPUT      0x0080
  131. #define IME_MODE_NOCODEINPUT    0x0100
  132. //
  133. //
  134. #endif // !KOREA
  135.  
  136. //
  137. //     IME APIs
  138. //
  139. #define IME_GETIMECAPS            0x03
  140. #define IME_SETOPEN               0x04
  141. #define IME_GETOPEN               0x05
  142. #define IME_GETVERSION            0x07
  143. #define IME_SETCONVERSIONWINDOW   0x08
  144. #ifdef  KOREA
  145. #define IME_MOVEIMEWINDOW         IME_SETCONVERSIONWINDOW
  146. #else
  147. #endif
  148. #define IME_SETCONVERSIONMODE     0x10
  149. #ifdef KOREA    // BeomOh - 10/23/92
  150. #define IME_SET_MODE              0x12
  151. #else
  152. #endif
  153. #define IME_GETCONVERSIONMODE     0x11
  154. #define IME_SENDVKEY              0x13
  155. #define IME_ENTERWORDREGISTERMODE 0x18
  156. #define IME_SETCONVERSIONFONTEX   0x19
  157. #ifdef  KOREA   // 01/12/93 KDLee MSCH
  158. #endif
  159.  
  160.  
  161. #ifdef KOREA    // BeomOh - 9/29/92
  162. //
  163. // IME_CODECONVERT subfunctions
  164. //
  165. #define IME_BANJAtoJUNJA        0x13
  166. #define IME_JUNJAtoBANJA        0x14
  167. #define IME_JOHABtoKS           0x15
  168. #define IME_KStoJOHAB           0x16
  169.  
  170. //
  171. // IME_AUTOMATA subfunctions
  172. //
  173. #define IMEA_INIT               0x01
  174. #define IMEA_NEXT               0x02
  175. #define IMEA_PREV               0x03
  176.  
  177. //
  178. // IME_HANJAMODE subfunctions
  179. //
  180. #define IME_REQUEST_CONVERT     0x01
  181. #define IME_ENABLE_CONVERT      0x02
  182.  
  183. //
  184. // IME_MOVEIMEWINDOW subfunctions
  185. //
  186. #define INTERIM_WINDOW          0x00
  187. #define MODE_WINDOW             0x01
  188. #define HANJA_WINDOW            0x02
  189. #endif // KOREA
  190.  
  191. //
  192. //
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200. // CTRL_MODIFY is "or" all modify bits, but now only one
  201.  
  202. //
  203. //    error code
  204. //
  205. #define IME_RS_ERROR            0x01    // genetal error
  206. #define IME_RS_NOIME            0x02    // IME is not installed
  207. #define IME_RS_TOOLONG          0x05    // given string is too long
  208. #define IME_RS_ILLEGAL          0x06    // illegal charactor(s) is string
  209. #define IME_RS_NOTFOUND         0x07    // no (more) candidate
  210. #define IME_RS_NOROOM           0x0a    // no disk/memory space
  211. #define IME_RS_DISKERROR        0x0e    // disk I/O error
  212. #define IME_RS_INVALID          0x11    // Win3.1/NT
  213. #define IME_RS_NEST             0x12    // called nested
  214. #define IME_RS_SYSTEMMODAL      0x13    // called when system mode
  215.  
  216. //
  217. //   report messge from IME to WinApps
  218. //
  219. #define WM_IME_REPORT       0x0280
  220.  
  221. //
  222. //   report message parameter for WM_IME_REPORT
  223. //
  224. #define IR_STRINGSTART      0x100
  225. #define IR_STRINGEND        0x101
  226. #define IR_OPENCONVERT      0x120
  227. #define IR_CHANGECONVERT    0x121
  228. #define IR_CLOSECONVERT     0x122
  229. #define IR_FULLCONVERT      0x123
  230. #define IR_IMESELECT        0x130
  231. #define IR_STRING       0x140
  232. #define IR_DBCSCHAR             0x160
  233. #define IR_UNDETERMINE          0x170
  234. #define IR_STRINGEX             0x180   // New for 3.1
  235. #define IR_MODEINFO             0x190
  236.  
  237. //#define WM_CONVERTREQUESTEX     0x0109
  238. #define WM_WNT_CONVERTREQUESTEX 0x0109 /* WM_CONVERTREQUESTEX: 109 for NT, 108 for OT */
  239. #define WM_CONVERTREQUEST       0x010A
  240. #define WM_CONVERTRESULT        0x010B
  241. #define WM_INTERIM              0x010C
  242.  
  243. #define WM_IMEKEYDOWN           0x290
  244. #define WM_IMEKEYUP             0x291
  245.  
  246.  
  247.  
  248.  
  249. //
  250. // UNDETERMINESTRING structure for IR_UNDETERMINE
  251. //
  252. typedef struct tagUNDETERMINESTRUCT {
  253.     DWORD    dwSize;
  254.     UINT     uDefIMESize;
  255.     UINT     uDefIMEPos;
  256.     UINT     uUndetTextLen;
  257.     UINT     uUndetTextPos;
  258.     UINT     uUndetAttrPos;
  259.     UINT     uCursorPos;
  260.     UINT     uDeltaStart;
  261.     UINT     uDetermineTextLen;
  262.     UINT     uDetermineTextPos;
  263.     UINT     uDetermineDelimPos;
  264.     UINT     uYomiTextLen;
  265.     UINT     uYomiTextPos;
  266.     UINT     uYomiDelimPos;
  267. } UNDETERMINESTRUCT,*PUNDETERMINESTRUCT,NEAR *NPUNDETERMINESTRUCT,FAR *LPUNDETERMINESTRUCT;
  268.  
  269.  
  270. typedef struct tagSTRINGEXSTRUCT {
  271.     DWORD    dwSize;
  272.     UINT     uDeterminePos;
  273.     UINT     uDetermineDelimPos;
  274.     UINT     uYomiPos;
  275.     UINT     uYomiDelimPos;
  276. } STRINGEXSTRUCT,NEAR *NPSTRINGEXSTRUCT,FAR *LPSTRINGEXSTRUCT;
  277.  
  278.  
  279. #if 0
  280. #define IMEMODE_CCHMAXTEXT 256
  281. typedef struct tagIMEMODEINFO {
  282.      DWORD     cchSystemTextLength;
  283.      CHAR_INFO aciSystemText[IMEMODE_CCHMAXTEXT];
  284.      DWORD     cchModeTextLength;
  285.      CHAR_INFO aciModeText[IMEMODE_CCHMAXTEXT];
  286. } IMEMODEINFO,*PIMEMODEINFO,*LPIMEMODEINFO;
  287. #endif
  288.  
  289. #ifdef __BORLANDC__
  290. #pragma option -b.
  291.   #include <poppack.h>
  292. #pragma option -b
  293. #endif
  294.  
  295. #ifdef __cplusplus
  296. }
  297. #endif  /* __cplusplus */
  298.  
  299. #pragma option -b.
  300. #endif // _IME_
  301.