imm.pas 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844
  1. (********************************************************************* *)
  2. (* imm.h - Input Method Manager definitions *)
  3. (* *)
  4. (* Copyright (c) Microsoft Corporation. All rights reserved. *)
  5. (* *)
  6. (* Converted to pascal by Dmitry Boyarintsev, using Chelper. *)
  7. (* *)
  8. (********************************************************************* *)
  9. {$IFNDEF FPC_DOTTEDUNITS}
  10. unit imm;
  11. {$ENDIF FPC_DOTTEDUNITS}
  12. {$mode delphi}
  13. interface
  14. {$IFDEF FPC_DOTTEDUNITS}
  15. uses
  16. WinApi.Windows;
  17. {$ELSE FPC_DOTTEDUNITS}
  18. uses
  19. Windows;
  20. {$ENDIF FPC_DOTTEDUNITS}
  21. {$PACKRECORDS C}
  22. {$ifdef FPC_OS_UNICODE}
  23. {$define UNICODE}
  24. {$endif}
  25. // IME_Codes
  26. // bit field for conversion mode
  27. const
  28. IME_CMODE_ALPHANUMERIC = $0000;
  29. IME_CMODE_NATIVE = $0001;
  30. IME_CMODE_CHINESE = IME_CMODE_NATIVE;
  31. IME_CMODE_HANGUL = IME_CMODE_NATIVE;
  32. IME_CMODE_JAPANESE = IME_CMODE_NATIVE;
  33. IME_CMODE_KATAKANA = $0002; // only effect under IME_CMODE_NATIVE
  34. IME_CMODE_LANGUAGE = $0003;
  35. IME_CMODE_FULLSHAPE = $0008;
  36. IME_CMODE_ROMAN = $0010;
  37. IME_CMODE_CHARCODE = $0020;
  38. IME_CMODE_HANJACONVERT = $0040;
  39. type
  40. HIMC = DWORD;
  41. HIMCC = DWORD;
  42. type
  43. PHKL = ^HKL;
  44. LPHKL = PHKL;
  45. type
  46. LPUINT = PUINT;
  47. // declared at rtl\win\wininc\struct.inc
  48. {type
  49. PtagCOMPOSITIONFORM = ^tagCOMPOSITIONFORM;
  50. tagCOMPOSITIONFORM = record
  51. dwStyle : DWORD;
  52. ptCurrentPos : POINT;
  53. rcArea : RECT;
  54. end;
  55. COMPOSITIONFORM = tagCOMPOSITIONFORM;
  56. PCOMPOSITIONFORM = PtagCOMPOSITIONFORM;
  57. NPCOMPOSITIONFORM = PtagCOMPOSITIONFORM;
  58. LPCOMPOSITIONFORM = PtagCOMPOSITIONFORM;}
  59. // declared at rtl\win\wininc\struct.inc
  60. {type
  61. PtagCANDIDATEFORM = ^tagCANDIDATEFORM;
  62. tagCANDIDATEFORM = packed record
  63. dwIndex : DWORD;
  64. dwStyle : DWORD;
  65. ptCurrentPos : POINT;
  66. rcArea : RECT;
  67. end;
  68. CANDIDATEFORM = tagCANDIDATEFORM;
  69. PCANDIDATEFORM = PtagCANDIDATEFORM;
  70. NPCANDIDATEFORM = PtagCANDIDATEFORM;
  71. LPCANDIDATEFORM = PtagCANDIDATEFORM;}
  72. // declared at rtl\win\wininc\struct.inc
  73. {type
  74. PtagCANDIDATELIST = ^tagCANDIDATELIST;
  75. tagCANDIDATELIST = packed record
  76. dwSize : DWORD;
  77. dwStyle : DWORD;
  78. dwCount : DWORD;
  79. dwSelection : DWORD;
  80. dwPageStart : DWORD;
  81. dwPageSize : DWORD;
  82. dwOffset : array [0..0] of DWORD;
  83. end;
  84. CANDIDATELIST = tagCANDIDATELIST;
  85. PCANDIDATELIST = PtagCANDIDATELIST;
  86. NPCANDIDATELIST = PtagCANDIDATELIST;
  87. LPCANDIDATELIST = PtagCANDIDATELIST;}
  88. type
  89. PtagREGISTERWORDA = ^tagREGISTERWORDA;
  90. tagREGISTERWORDA = packed record
  91. lpReading : LPSTR;
  92. lpWord : LPSTR;
  93. end;
  94. REGISTERWORDA = tagREGISTERWORDA;
  95. TREGISTERWORDA = REGISTERWORDA;
  96. PREGISTERWORDA = PtagREGISTERWORDA;
  97. NPREGISTERWORDA = PtagREGISTERWORDA;
  98. LPREGISTERWORDA = PtagREGISTERWORDA;
  99. type
  100. PtagREGISTERWORDW = ^tagREGISTERWORDW;
  101. tagREGISTERWORDW = packed record
  102. lpReading : LPWSTR;
  103. lpWord : LPWSTR;
  104. end;
  105. REGISTERWORDW = tagREGISTERWORDW;
  106. TREGISTERWORDW = REGISTERWORDW;
  107. PREGISTERWORDW = PtagREGISTERWORDW;
  108. NPREGISTERWORDW = PtagREGISTERWORDW;
  109. LPREGISTERWORDW = PtagREGISTERWORDW;
  110. {$ifdef UNICODE}
  111. PtagREGISTERWORD = PtagREGISTERWORDW;
  112. tagREGISTERWORD = tagREGISTERWORDW;
  113. REGISTERWORD = REGISTERWORDW;
  114. TREGISTERWORD = TREGISTERWORDW;
  115. PREGISTERWORD = PREGISTERWORDW;
  116. NPREGISTERWORD = NPREGISTERWORDW;
  117. LPREGISTERWORD = LPREGISTERWORDW;
  118. {$else}
  119. PtagREGISTERWORD = PtagREGISTERWORDA;
  120. tagREGISTERWORD = tagREGISTERWORDA;
  121. REGISTERWORD = REGISTERWORDA;
  122. TREGISTERWORD = TREGISTERWORDA;
  123. PREGISTERWORD = PREGISTERWORDA;
  124. NPREGISTERWORD = NPREGISTERWORDA;
  125. LPREGISTERWORD = LPREGISTERWORDA;
  126. {$endif}
  127. type
  128. PtagRECONVERTSTRING = ^tagRECONVERTSTRING;
  129. tagRECONVERTSTRING = packed record
  130. dwSize : DWORD;
  131. dwVersion : DWORD;
  132. dwStrLen : DWORD;
  133. dwStrOffset : DWORD;
  134. dwCompStrLen : DWORD;
  135. dwCompStrOffset : DWORD;
  136. dwTargetStrLen : DWORD;
  137. dwTargetStrOffset : DWORD;
  138. end;
  139. RECONVERTSTRING = tagRECONVERTSTRING;
  140. TRECONVERTSTRING = RECONVERTSTRING;
  141. PRECONVERTSTRING = PtagRECONVERTSTRING;
  142. NPRECONVERTSTRING = PtagRECONVERTSTRING;
  143. LPRECONVERTSTRING = PtagRECONVERTSTRING;
  144. const
  145. STYLE_DESCRIPTION_SIZE = 32;
  146. type
  147. PtagSTYLEBUFA = ^tagSTYLEBUFA;
  148. tagSTYLEBUFA = packed record
  149. dwStyle : DWORD;
  150. szDescription : array [0..STYLE_DESCRIPTION_SIZE-1] of AnsiChar;
  151. end;
  152. STYLEBUFA = tagSTYLEBUFA;
  153. TSTYLEBUFA = STYLEBUFA;
  154. PSTYLEBUFA = PtagSTYLEBUFA;
  155. NPSTYLEBUFA = PtagSTYLEBUFA;
  156. LPSTYLEBUFA = PtagSTYLEBUFA;
  157. type
  158. PtagSTYLEBUFW = ^tagSTYLEBUFW;
  159. tagSTYLEBUFW = packed record
  160. dwStyle : DWORD;
  161. szDescription : array [0..STYLE_DESCRIPTION_SIZE-1] of WCHAR;
  162. end;
  163. STYLEBUFW = tagSTYLEBUFW;
  164. TSTYLEBUFW = STYLEBUFW;
  165. PSTYLEBUFW = PtagSTYLEBUFW;
  166. NPSTYLEBUFW = PtagSTYLEBUFW;
  167. LPSTYLEBUFW = PtagSTYLEBUFW;
  168. {$ifdef UNICODE}
  169. STYLEBUF = STYLEBUFW;
  170. TSTYLEBUF = TSTYLEBUFW;
  171. PSTYLEBUF = PSTYLEBUFW;
  172. NPSTYLEBUF = NPSTYLEBUFW;
  173. LPSTYLEBUF = LPSTYLEBUFW;
  174. {$else}
  175. STYLEBUF = STYLEBUFA;
  176. TSTYLEBUF = TSTYLEBUFA;
  177. PSTYLEBUF = PSTYLEBUFA;
  178. NPSTYLEBUF = NPSTYLEBUFA;
  179. LPSTYLEBUF = LPSTYLEBUFA;
  180. {$endif}
  181. const
  182. IMEMENUITEM_STRING_SIZE = 80;
  183. type
  184. PtagIMEMENUITEMINFOA = ^tagIMEMENUITEMINFOA;
  185. tagIMEMENUITEMINFOA = packed record
  186. cbSize : UINT;
  187. fType : UINT;
  188. fState : UINT;
  189. wID : UINT;
  190. hbmpChecked : HBITMAP;
  191. hbmpUnchecked : HBITMAP;
  192. dwItemData : DWORD;
  193. szString : array [0..IMEMENUITEM_STRING_SIZE-1] of AnsiChar;
  194. hbmpItem : HBITMAP;
  195. end;
  196. IMEMENUITEMINFOA = tagIMEMENUITEMINFOA;
  197. TIMEMENUITEMINFOA = IMEMENUITEMINFOA;
  198. PIMEMENUITEMINFOA = PtagIMEMENUITEMINFOA;
  199. NPIMEMENUITEMINFOA = PtagIMEMENUITEMINFOA;
  200. LPIMEMENUITEMINFOA = PtagIMEMENUITEMINFOA;
  201. type
  202. PtagIMEMENUITEMINFOW = ^tagIMEMENUITEMINFOW;
  203. tagIMEMENUITEMINFOW = packed record
  204. cbSize : UINT;
  205. fType : UINT;
  206. fState : UINT;
  207. wID : UINT;
  208. hbmpChecked : HBITMAP;
  209. hbmpUnchecked : HBITMAP;
  210. dwItemData : DWORD;
  211. szString : array [0..IMEMENUITEM_STRING_SIZE-1] of WCHAR;
  212. hbmpItem : HBITMAP;
  213. end;
  214. IMEMENUITEMINFOW = tagIMEMENUITEMINFOW;
  215. TIMEMENUITEMINFOW = IMEMENUITEMINFOW;
  216. PIMEMENUITEMINFOW = PtagIMEMENUITEMINFOW;
  217. NPIMEMENUITEMINFOW = PtagIMEMENUITEMINFOW;
  218. LPIMEMENUITEMINFOW = PtagIMEMENUITEMINFOW;
  219. {$ifdef UNICODE}
  220. IMEMENUITEMINFO = IMEMENUITEMINFOW;
  221. TIMEMENUITEMINFO = TIMEMENUITEMINFOW;
  222. PIMEMENUITEMINFO = PIMEMENUITEMINFOW;
  223. NPIMEMENUITEMINFO = NPIMEMENUITEMINFOW;
  224. LPIMEMENUITEMINFO = LPIMEMENUITEMINFOW;
  225. {$else}
  226. IMEMENUITEMINFO = IMEMENUITEMINFOA;
  227. TIMEMENUITEMINFO = TIMEMENUITEMINFOA;
  228. PIMEMENUITEMINFO = PIMEMENUITEMINFOA;
  229. NPIMEMENUITEMINFO = NPIMEMENUITEMINFOA;
  230. LPIMEMENUITEMINFO = LPIMEMENUITEMINFOA;
  231. {$endif}
  232. type
  233. PtagIMECHARPOSITION = ^tagIMECHARPOSITION;
  234. tagIMECHARPOSITION = packed record
  235. dwSize : DWORD;
  236. dwCharPos : DWORD;
  237. pt : POINT;
  238. cLineHeight : UINT;
  239. rcDocument : RECT;
  240. end;
  241. IMECHARPOSITION = tagIMECHARPOSITION;
  242. TIMECHARPOSITION = IMECHARPOSITION;
  243. PIMECHARPOSITION = PtagIMECHARPOSITION;
  244. NPIMECHARPOSITION = PtagIMECHARPOSITION;
  245. LPIMECHARPOSITION = PtagIMECHARPOSITION;
  246. type
  247. IMCENUMPROC = function(par0: HIMC; par1: LPARAM): LongBool; stdcall;
  248. TIMCENUMPROC = IMCENUMPROC;
  249. // prototype of IMM API
  250. const
  251. Imm = 'imm32';
  252. function ImmInstallIMEA(lpszIMEFileName, lpszLayoutText: LPCSTR): HKL; stdcall; external Imm name 'ImmInstallIMEA';
  253. function ImmInstallIMEW(lpszIMEFileName, lpszLayoutText: LPCWSTR): HKL; stdcall; external Imm name 'ImmInstallIMEW';
  254. {$ifndef UNICODE}
  255. function ImmInstallIME(lpszIMEFileName, lpszLayoutText: LPCSTR): HKL; stdcall; external Imm name 'ImmInstallIMEA';
  256. {$else}
  257. function ImmInstallIME(lpszIMEFileName, lpszLayoutText: LPCWSTR): HKL; stdcall; external Imm name 'ImmInstallIMEW';
  258. {$endif}
  259. function ImmGetDefaultIMEWnd(wnd: HWND): HWND; stdcall; external Imm name 'ImmGetDefaultIMEWnd';
  260. function NImmGetDescriptionA(kl: HKL; lpszDescription: LPSTR; uBufLen: UINT): UINT; stdcall; external Imm name 'ImmGetDescriptionA';
  261. function ImmGetDescriptionW(kl: HKL; lpszDescription: LPWSTR; uBufLen: UINT): UINT; stdcall; external Imm name 'ImmGetDescriptionW';
  262. {$ifndef UNICODE}
  263. function ImmGetDescription(kl: HKL; lpszDescription: LPSTR; uBufLen: UINT): UINT; stdcall; external Imm name 'ImmGetDescriptionA';
  264. {$else}
  265. function ImmGetDescription(kl: HKL; lpszDescription: LPWSTR; uBufLen: UINT): UINT; stdcall; external Imm name 'ImmGetDescriptionW';
  266. {$endif}
  267. function ImmGetIMEFileNameA(kl: HKL; lpszFileName: LPSTR; uBufLen: UINT): UINT; stdcall; external Imm name 'ImmGetIMEFileNameA';
  268. function ImmGetIMEFileNameW(kl: HKL; lpszFileName: LPWSTR; uBufLen: UINT): UINT; stdcall; external Imm name 'ImmGetIMEFileNameW';
  269. {$ifndef UNICODE}
  270. function ImmGetIMEFileName(kl: HKL; lpszFileName: LPSTR; uBufLen: UINT): UINT; stdcall; external Imm name 'ImmGetIMEFileNameA';
  271. {$else}
  272. function ImmGetIMEFileName(kl: HKL; lpszFileName: LPWSTR; uBufLen: UINT): UINT; stdcall; external Imm name 'ImmGetIMEFileNameW';
  273. {$endif}
  274. function ImmGetProperty (kl: HKL; fdwIndex: DWORD): DWORD; stdcall; external Imm name 'ImmGetProperty';
  275. function ImmIsIME(kl: HKL): LongBool; stdcall; external Imm name 'ImmIsIME';
  276. function ImmSimulateHotKey(wnd: HWND; dwHotKeyID: DWORD): LongBool; stdcall; external Imm name 'ImmSimulateHotKey';
  277. function ImmCreateContext: HIMC; stdcall; external Imm name 'ImmCreateContext';
  278. function ImmDestroyContext(imc: HIMC): LongBool; stdcall; external Imm name 'ImmDestroyContext';
  279. function ImmGetContext(wnd: HWND): HIMC; stdcall; external Imm name 'ImmGetContext';
  280. function ImmReleaseContext(wnd: HWND; imc: HIMC): LongBool; stdcall; external Imm name 'ImmReleaseContext';
  281. function ImmAssociateContext(wnd: HWND; imc: HIMC): HIMC; stdcall; external Imm name 'ImmAssociateContext';
  282. function ImmAssociateContextEx(wnd: HWND; imc: HIMC; dwFlags: DWORD): LongBool; stdcall; external Imm name 'ImmAssociateContextEx';
  283. function ImmGetCompositionStringA(imc: HIMC; dwIndex: LONG;
  284. lpBuf: LPVOID; dwBufLen: DWORD): Longword; stdcall; external Imm name 'ImmGetCompositionStringA';
  285. function ImmGetCompositionStringW(imc: HIMC; dwIndex: LONG;
  286. lpBuf: LPVOID; dwBufLen: DWORD): Longword; stdcall; external Imm name 'ImmGetCompositionStringW';
  287. {$ifndef UNICODE}
  288. function ImmGetCompositionString(imc: HIMC; dwIndex: DWORD;
  289. lpBuf: LPVOID; dwBufLen: DWORD): LONG; stdcall; external Imm name 'ImmGetCompositionStringA';
  290. {$else}
  291. function ImmGetCompositionString(imc: HIMC; dwIndex: DWORD;
  292. lpBuf: LPVOID; dwBufLen: DWORD): LONG; stdcall; external Imm name 'ImmGetCompositionStringW';
  293. {$endif}
  294. function ImmSetCompositionStringA(imc: HIMC; dwIndex: DWORD; lpComp: LPVOID;
  295. dwCompLen: DWORD; lpRead: LPVOID; dwReadLen: DWORD): LongBool; stdcall; external Imm name 'ImmSetCompositionStringA';
  296. function ImmSetCompositionStringW(imc: HIMC; dwIndex: DWORD; lpComp: LPVOID;
  297. dwCompLen: DWORD; lpRead: LPVOID; dwReadLen: DWORD): LongBool; stdcall; external Imm name 'ImmSetCompositionStringW';
  298. {$ifndef UNICODE}
  299. function ImmSetCompositionString(imc: HIMC; dwIndex: DWORD; lpComp: LPVOID;
  300. dwCompLen: DWORD; lpRead: LPVOID; dwReadLen: DWORD): LongBool; stdcall; external Imm name 'ImmSetCompositionStringA';
  301. {$else}
  302. function ImmSetCompositionString(imc: HIMC; dwIndex: DWORD; lpComp: LPVOID;
  303. dwCompLen: DWORD; lpRead: LPVOID; dwReadLen: DWORD): LongBool; stdcall; external Imm name 'ImmSetCompositionStringW';
  304. {$endif}
  305. function ImmGetCandidateListCountA(imc: HIMC; lpdwListCount: LPDWORD): DWORD; stdcall; external Imm name 'ImmGetCandidateListCountA';
  306. function ImmGetCandidateListCountW(imc: HIMC; lpdwListCount: LPDWORD): DWORD; stdcall; external Imm name 'ImmGetCandidateListCountW';
  307. {$ifndef UNICODE}
  308. function ImmGetCandidateListCount(imc: HIMC; lpdwListCount: LPDWORD): DWORD; stdcall; external Imm name 'ImmGetCandidateListCountA';
  309. {$else}
  310. function ImmGetCandidateListCount(imc: HIMC; lpdwListCount: LPDWORD): DWORD; stdcall; external Imm name 'ImmGetCandidateListCountW';
  311. {$endif}
  312. function ImmGetCandidateListA(imc: HIMC; deIndex: DWORD;
  313. lpCandList: LPCANDIDATELIST; dwBufLen: DWORD): DWORD; stdcall; external Imm name 'ImmGetCandidateListA';
  314. function ImmGetCandidateListW(imc: HIMC; deIndex: DWORD;
  315. lpCandList: LPCANDIDATELIST; dwBufLen: DWORD): DWORD; stdcall; external Imm name 'ImmGetCandidateListW';
  316. {$ifndef UNICODE}
  317. function ImmGetCandidateList(imc: HIMC; deIndex: DWORD;
  318. lpCandList: LPCANDIDATELIST; dwBufLen: DWORD): DWORD; stdcall; external Imm name 'ImmGetCandidateListA';
  319. {$else}
  320. function ImmGetCandidateList(imc: HIMC; deIndex: DWORD;
  321. lpCandList: LPCANDIDATELIST; dwBufLen: DWORD): DWORD; stdcall; external Imm name 'ImmGetCandidateListW';
  322. {$endif}
  323. function ImmGetGuideLineA(imc: HIMC; dwIndex: DWORD; lpBuf: LPSTR;
  324. dwBufLen: DWORD): DWORD; stdcall ; external Imm name 'ImmGetGuideLineA';
  325. function ImmGetGuideLineW(imc: HIMC; dwIndex: DWORD; lpBuf: LPWSTR;
  326. dwBufLen: DWORD): DWORD; stdcall ; external Imm name 'ImmGetGuideLineW';
  327. {$ifndef UNICODE}
  328. function ImmGetGuideLine(imc: HIMC; dwIndex: DWORD; lpBuf: LPSTR;
  329. dwBufLen: DWORD): DWORD; stdcall ; external Imm name 'ImmGetGuideLineA';
  330. {$else}
  331. function ImmGetGuideLine(imc: HIMC; dwIndex: DWORD; lpBuf: LPWSTR;
  332. dwBufLen: DWORD): DWORD; stdcall ; external Imm name 'ImmGetGuideLineW';
  333. {$endif}
  334. function ImmGetConversionStatus(imc: HIMC; lpfdwConversion, lpfdwSentence: LPDWORD): LongBool; stdcall ; external Imm name 'ImmGetConversionStatus';
  335. function ImmSetConversionStatus(imc: HIMC; fdwConversion, fdwSentence: DWORD): LongBool; stdcall ; external Imm name 'ImmSetConversionStatus';
  336. function ImmGetOpenStatus(imc: HIMC): LongBool; stdcall ; external Imm name 'ImmGetOpenStatus';
  337. function ImmSetOpenStatus(imc: HIMC; par1: LongBool): LongBool; stdcall ; external Imm name 'ImmSetOpenStatus';
  338. function ImmGetCompositionFontA(imc: HIMC; lplf: PLOGFONTA): LongBool; stdcall ; external Imm name 'ImmGetCompositionFontA';
  339. function ImmGetCompositionFontW(imc: HIMC; lplf: PLOGFONTW): LongBool; stdcall ; external Imm name 'ImmGetCompositionFontW';
  340. {$ifndef UNICODE}
  341. function ImmGetCompositionFont(imc: HIMC; lplf: PLOGFONTA): LongBool; stdcall ; external Imm name 'ImmGetCompositionFontA';
  342. {$else}
  343. function ImmGetCompositionFont(imc: HIMC; lplf: PLOGFONTW): LongBool; stdcall ; external Imm name 'ImmGetCompositionFontW';
  344. {$endif}
  345. function ImmSetCompositionFontA(imc: HIMC; lplf: PLOGFONTA): LongBool; stdcall ; external Imm name 'ImmSetCompositionFontA';
  346. function ImmSetCompositionFontW(imc: HIMC; lplf: PLOGFONTW): LongBool; stdcall ; external Imm name 'ImmSetCompositionFontW';
  347. {$ifndef UNICODE}
  348. function ImmSetCompositionFont(imc: HIMC; lplf: PLOGFONTA): LongBool; stdcall ; external Imm name 'ImmSetCompositionFontA';
  349. {$else}
  350. function ImmSetCompositionFont(imc: HIMC; lplf: PLOGFONTW): LongBool; stdcall ; external Imm name 'ImmSetCompositionFontW';
  351. {$endif}
  352. function ImmConfigureIMEA(kl: HKL; wnd: HWND; dwMode: DWORD; lpData: LPVOID): LongBool; stdcall ; external Imm name 'ImmConfigureIMEA';
  353. function ImmConfigureIMEW(kl: HKL; wnd: HWND; dwMode: DWORD; lpData: LPVOID): LongBool; stdcall ; external Imm name 'ImmConfigureIMEW';
  354. {$ifndef UNICODE}
  355. function ImmConfigureIME(kl: HKL; wnd: HWND; dwMode: DWORD; lpData: LPVOID): LongBool; stdcall ; external Imm name 'ImmConfigureIMEA';
  356. {$else}
  357. function ImmConfigureIME(kl: HKL; wnd: HWND; dwMode: DWORD; lpData: LPVOID): LongBool; stdcall ; external Imm name 'ImmConfigureIMEW';
  358. {$endif}
  359. function ImmEscapeA(kl: HKL; imc: HIMC; uEscape: UINT; lpData: LPVOID): LRESULT; stdcall ; external Imm name 'ImmEscapeA';
  360. function ImmEscapeW(kl: HKL; imc: HIMC; uEscape: UINT; lpData: LPVOID): LRESULT; stdcall ; external Imm name 'ImmEscapeW';
  361. {$ifndef UNICODE}
  362. function ImmEscape(kl: HKL; imc: HIMC; uEscape: UINT; lpData: LPVOID): LRESULT; stdcall ; external Imm name 'ImmEscapeA';
  363. {$else}
  364. function ImmEscape(kl: HKL; imc: HIMC; uEscape: UINT; lpData: LPVOID): LRESULT; stdcall ; external Imm name 'ImmEscapeW';
  365. {$endif}
  366. function ImmGetConversionListA(kl: HKL; imc: HIMC; lpSrc: LPCSTR;
  367. lpDst: LPCANDIDATELIST; dwBufLen: DWORD; uFlag: UINT): DWORD; stdcall ; external Imm name 'ImmGetConversionListA';
  368. function ImmGetConversionListW(kl: HKL; imc: HIMC; lpSrc: LPCWSTR;
  369. lpDst: LPCANDIDATELIST; dwBufLen: DWORD; uFlag: UINT): DWORD; stdcall ; external Imm name 'ImmGetConversionListW';
  370. {$ifndef UNICODE}
  371. function ImmGetConversionList(kl: HKL; imc: HIMC; lpSrc: LPCSTR;
  372. lpDst: LPCANDIDATELIST; dwBufLen: DWORD; uFlag: UINT): DWORD; stdcall ; external Imm name 'ImmGetConversionListA';
  373. {$else}
  374. function ImmGetConversionList(kl: HKL; imc: HIMC; lpSrc: LPCWSTR;
  375. lpDst: LPCANDIDATELIST; dwBufLen: DWORD; uFlag: UINT): DWORD; stdcall ; external Imm name 'ImmGetConversionListW';
  376. {$endif}
  377. function ImmNotifyIME(imc: HIMC; dwAction, dwIndex, dwValue: DWORD): LongBool; stdcall ; external Imm name 'ImmNotifyIME';
  378. function ImmGetStatusWindowPos(imc: HIMC; lpptPos: LPPOINT): LongBool; stdcall ; external Imm name 'ImmGetStatusWindowPos';
  379. function ImmSetStatusWindowPos(imc: HIMC; lpptPos: LPPOINT): LongBool; stdcall ; external Imm name 'ImmSetStatusWindowPos';
  380. function ImmGetCompositionWindow(imc: HIMC; lpCompForm: LPCOMPOSITIONFORM): LongBool; stdcall ; external Imm name 'ImmGetCompositionWindow';
  381. function ImmSetCompositionWindow(imc: HIMC; lpCompForm: LPCOMPOSITIONFORM): LongBool; stdcall ; external Imm name 'ImmSetCompositionWindow';
  382. function ImmGetCandidateWindow(imc: HIMC; par1: DWORD; lpCandidate: LPCANDIDATEFORM): LongBool; stdcall ; external Imm name 'ImmGetCandidateWindow';
  383. function ImmSetCandidateWindow(imc: HIMC; lpCandidate: LPCANDIDATEFORM): LongBool; stdcall ; external Imm name 'ImmSetCandidateWindow';
  384. function ImmIsUIMessageA(wnd: HWND; msg: UINT; wPar: WPARAM; lPar: LPARAM): LongBool; stdcall ; external Imm name 'ImmIsUIMessageA';
  385. function ImmIsUIMessageW(wnd: HWND; msg: UINT; wPar: WPARAM; lPar: LPARAM): LongBool; stdcall ; external Imm name 'ImmIsUIMessageW';
  386. {$ifndef UNICODE}
  387. function ImmIsUIMessage(wnd: HWND; msg: UINT; wPar: WPARAM; lPar: LPARAM): LongBool; stdcall ; external Imm name 'ImmIsUIMessageA';
  388. {$else}
  389. function ImmIsUIMessage(wnd: HWND; msg: UINT; wPar: WPARAM; lPar: LPARAM): LongBool; stdcall ; external Imm name 'ImmIsUIMessageW';
  390. {$endif}
  391. function ImmGetVirtualKey(wnd: HWND): UINT; stdcall ; external Imm name 'ImmGetVirtualKey';
  392. type
  393. REGISTERWORDENUMPROCA = function(lpszReading: LPCSTR; par1: DWORD;
  394. lpszString: LPCSTR; par3: LPVOID): Integer; stdcall;
  395. TREGISTERWORDENUMPROCA = REGISTERWORDENUMPROCA;
  396. REGISTERWORDENUMPROCW = function(lpszReading: LPCWSTR; par1: DWORD;
  397. lpszString: LPCWSTR; par3: LPVOID): Integer; stdcall;
  398. TREGISTERWORDENUMPROCW = REGISTERWORDENUMPROCW;
  399. {$ifdef UNICODE}
  400. TREGISTERWORDENUMPROC = REGISTERWORDENUMPROCW;
  401. REGISTERWORDENUMPROC = REGISTERWORDENUMPROCW;
  402. {$else}
  403. TREGISTERWORDENUMPROC = REGISTERWORDENUMPROCA;
  404. REGISTERWORDENUMPROC = REGISTERWORDENUMPROCA;
  405. {$endif}
  406. function ImmRegisterWordA(kl: HKL; lpszReading: LPCSTR; dwStyle: DWORD; lpszRegister: LPCSTR): LongBool; stdcall ; external Imm name 'ImmRegisterWordA';
  407. function ImmRegisterWordW(kl: HKL; lpszReading: LPCWSTR; dwStyle: DWORD; lpszRegister: LPCWSTR): LongBool; stdcall ; external Imm name 'ImmRegisterWordW';
  408. {$ifndef UNICODE}
  409. function ImmRegisterWord(kl: HKL; lpszReading: LPCSTR; dwStyle: DWORD; lpszRegister: LPCSTR): LongBool; stdcall ; external Imm name 'ImmRegisterWordA';
  410. {$else}
  411. function ImmRegisterWord(kl: HKL; lpszReading: LPCWSTR; dwStyle: DWORD; lpszRegister: LPCWSTR): LongBool; stdcall ; external Imm name 'ImmRegisterWordW';
  412. {$endif}
  413. function ImmUnregisterWordA(kl: HKL; lpszReading: LPCSTR; dwStyle: DWORD; lpszUnregister: LPCSTR): LongBool; stdcall ; external Imm name 'ImmUnregisterWordA';
  414. function ImmUnregisterWordW(kl: HKL; lpszReading: LPCWSTR; dwStyle: DWORD; lpszUnregister: LPCWSTR): LongBool; stdcall ; external Imm name 'ImmUnregisterWordW';
  415. {$ifndef UNICODE}
  416. function ImmUnregisterWord(kl: HKL; lpszReading: LPCSTR; dwStyle: DWORD; lpszUnregister: LPCSTR): LongBool; stdcall ; external Imm name 'ImmUnregisterWordA';
  417. {$else}
  418. function ImmUnregisterWord(kl: HKL; lpszReading: LPCWSTR; dwStyle: DWORD; lpszUnregister: LPCWSTR): LongBool; stdcall ; external Imm name 'ImmUnregisterWordW';
  419. {$endif}
  420. function ImmGetRegisterWordStyleA(kl: HKL; nItem: UINT; lpStyleBuf: LPSTYLEBUFA): UINT; stdcall ; external Imm name 'ImmGetRegisterWordStyleA';
  421. function ImmGetRegisterWordStyleW(kl: HKL; nItem: UINT; lpStyleBuf: LPSTYLEBUFW): UINT; stdcall ; external Imm name 'ImmGetRegisterWordStyleW';
  422. {$ifndef UNICODE}
  423. function ImmGetRegisterWordStyle(kl: HKL; nItem: UINT; lpStyleBuf: LPSTYLEBUFA): UINT; stdcall ; external Imm name 'ImmGetRegisterWordStyleA';
  424. {$else}
  425. function ImmGetRegisterWordStyle(kl: HKL; nItem: UINT; lpStyleBuf: LPSTYLEBUFW): UINT; stdcall ; external Imm name 'ImmGetRegisterWordStyleW';
  426. {$endif}
  427. function ImmEnumRegisterWordA(kl: HKL; lpfnEnumProc: REGISTERWORDENUMPROCA;
  428. lpszReading: LPCSTR; dwStyle: DWORD; lpszRegister: LPCSTR; lpData: LPVOID): UINT; stdcall ; external Imm name 'ImmEnumRegisterWordA';
  429. function ImmEnumRegisterWordW(kl: HKL; lpfnEnumProc: REGISTERWORDENUMPROCW;
  430. lpszReading: LPCWSTR; dwStyle: DWORD; lpszRegister: LPCWSTR; lpData: LPVOID): UINT; stdcall ; external Imm name 'ImmEnumRegisterWordW';
  431. {$ifndef UNICODE}
  432. function ImmEnumRegisterWord(kl: HKL; lpfnEnumProc: REGISTERWORDENUMPROCA;
  433. lpszReading: LPCSTR; dwStyle: DWORD; lpszRegister: LPCSTR; lpData: LPVOID): UINT; stdcall ; external Imm name 'ImmEnumRegisterWordA';
  434. {$else}
  435. function ImmEnumRegisterWord(kl: HKL; lpfnEnumProc: REGISTERWORDENUMPROCW;
  436. lpszReading: LPCWSTR; dwStyle: DWORD; lpszRegister: LPCWSTR; lpData: LPVOID): UINT; stdcall ; external Imm name 'ImmEnumRegisterWordW';
  437. {$endif}
  438. function ImmDisableIME(idThread: DWORD): LongBool; stdcall ; external Imm name 'ImmDisableIME';
  439. function ImmEnumInputContext(idThread: DWORD; lpfn: IMCENUMPROC; lParam: LPARAM): LongBool; stdcall ; external Imm name 'ImmEnumInputContext';
  440. function ImmGetImeMenuItemsA(imc: HIMC; dwFlags, dwType: DWORD;
  441. lpImeParentMenu, lpImeMenu: LPIMEMENUITEMINFOA; dwSize: DWORD): DWORD; stdcall ; external Imm name 'ImmGetImeMenuItemsA';
  442. function ImmGetImeMenuItemsW(par0: HIMC; dwFlags, dwType: DWORD;
  443. lpImeParentMenu, lpImeMenu: LPIMEMENUITEMINFOW; dwSize: DWORD): DWORD; stdcall ; external Imm name 'ImmGetImeMenuItemsW';
  444. {$ifndef UNICODE}
  445. function ImmGetImeMenuItems(imc: HIMC; dwFlags, dwType: DWORD;
  446. lpImeParentMenu, lpImeMenu: LPIMEMENUITEMINFOA; dwSize: DWORD): DWORD; stdcall ; external Imm name 'ImmGetImeMenuItemsA';
  447. {$else}
  448. function ImmGetImeMenuItems(par0: HIMC; dwFlags, dwType: DWORD;
  449. lpImeParentMenu, lpImeMenu: LPIMEMENUITEMINFOW; dwSize: DWORD): DWORD; stdcall ; external Imm name 'ImmGetImeMenuItemsW';
  450. {$endif}
  451. function ImmDisableTextFrameService(idThread: DWORD): LongBool; stdcall ; external Imm name 'ImmDisableTextFrameService';
  452. // wParam for WM_IME_CONTROL
  453. const
  454. IMC_GETCANDIDATEPOS = $0007;
  455. IMC_SETCANDIDATEPOS = $0008;
  456. IMC_GETCOMPOSITIONFONT = $0009;
  457. IMC_SETCOMPOSITIONFONT = $000A;
  458. IMC_GETCOMPOSITIONWINDOW = $000B;
  459. IMC_SETCOMPOSITIONWINDOW = $000C;
  460. IMC_GETSTATUSWINDOWPOS = $000F;
  461. IMC_SETSTATUSWINDOWPOS = $0010;
  462. IMC_CLOSESTATUSWINDOW = $0021;
  463. IMC_OPENSTATUSWINDOW = $0022;
  464. // dwAction for ImmNotifyIME
  465. NI_OPENCANDIDATE = $0010;
  466. NI_CLOSECANDIDATE = $0011;
  467. NI_SELECTCANDIDATESTR = $0012;
  468. NI_CHANGECANDIDATELIST = $0013;
  469. NI_FINALIZECONVERSIONRESULT = $0014;
  470. NI_COMPOSITIONSTR = $0015;
  471. NI_SETCANDIDATE_PAGESTART = $0016;
  472. NI_SETCANDIDATE_PAGESIZE = $0017;
  473. NI_IMEMENUSELECTED = $0018;
  474. // lParam for WM_IME_SETCONTEXT
  475. ISC_SHOWUICANDIDATEWINDOW = $00000001;
  476. ISC_SHOWUICOMPOSITIONWINDOW = $80000000;
  477. ISC_SHOWUIGUIDELINE = $40000000;
  478. ISC_SHOWUIALLCANDIDATEWINDOW = $0000000F;
  479. ISC_SHOWUIALL = $C000000F;
  480. // dwIndex for ImmNotifyIME/NI_COMPOSITIONSTR
  481. CPS_COMPLETE = $0001;
  482. CPS_CONVERT = $0002;
  483. CPS_REVERT = $0003;
  484. CPS_CANCEL = $0004;
  485. // the modifiers of hot key
  486. MOD_ALT = $0001;
  487. MOD_CONTROL = $0002;
  488. MOD_SHIFT = $0004;
  489. MOD_LEFT = $8000;
  490. MOD_RIGHT = $4000;
  491. MOD_ON_KEYUP = $0800;
  492. MOD_IGNORE_ALL_MODIFIER = $0400;
  493. // Windows for Simplified Chinese Edition hot key ID from 0x10 - 0x2F
  494. IME_CHOTKEY_IME_NONIME_TOGGLE = $10;
  495. IME_CHOTKEY_SHAPE_TOGGLE = $11;
  496. IME_CHOTKEY_SYMBOL_TOGGLE = $12;
  497. // Windows for Japanese Edition hot key ID from 0x30 - 0x4F
  498. IME_JHOTKEY_CLOSE_OPEN = $30;
  499. // Windows for Korean Edition hot key ID from 0x50 - 0x6F
  500. IME_KHOTKEY_SHAPE_TOGGLE = $50;
  501. IME_KHOTKEY_HANJACONVERT = $51;
  502. IME_KHOTKEY_ENGLISH = $52;
  503. // Windows for Traditional Chinese Edition hot key ID from 0x70 - 0x8F
  504. IME_THOTKEY_IME_NONIME_TOGGLE = $70;
  505. IME_THOTKEY_SHAPE_TOGGLE = $71;
  506. IME_THOTKEY_SYMBOL_TOGGLE = $72;
  507. // direct switch hot key ID from 0x100 - 0x11F
  508. IME_HOTKEY_DSWITCH_FIRST = $100;
  509. IME_HOTKEY_DSWITCH_LAST = $11F;
  510. // IME private hot key from 0x200 - 0x21F
  511. IME_HOTKEY_PRIVATE_FIRST = $200;
  512. IME_ITHOTKEY_RESEND_RESULTSTR = $200;
  513. IME_ITHOTKEY_PREVIOUS_COMPOSITION = $201;
  514. IME_ITHOTKEY_UISTYLE_TOGGLE = $202;
  515. IME_ITHOTKEY_RECONVERTSTRING = $203;
  516. IME_HOTKEY_PRIVATE_LAST = $21F;
  517. // parameter of ImmGetCompositionString
  518. GCS_COMPREADSTR = $0001;
  519. GCS_COMPREADATTR = $0002;
  520. GCS_COMPREADCLAUSE = $0004;
  521. GCS_COMPSTR = $0008;
  522. GCS_COMPATTR = $0010;
  523. GCS_COMPCLAUSE = $0020;
  524. GCS_CURSORPOS = $0080;
  525. GCS_DELTASTART = $0100;
  526. GCS_RESULTREADSTR = $0200;
  527. GCS_RESULTREADCLAUSE = $0400;
  528. GCS_RESULTSTR = $0800;
  529. GCS_RESULTCLAUSE = $1000;
  530. // style bit flags for WM_IME_COMPOSITION
  531. CS_INSERTCHAR = $2000;
  532. CS_NOMOVECARET = $4000;
  533. // IME version constants
  534. IMEVER_0310 = $0003000A;
  535. IMEVER_0400 = $00040000;
  536. // IME property bits
  537. IME_PROP_AT_CARET = $00010000;
  538. IME_PROP_SPECIAL_UI = $00020000;
  539. IME_PROP_CANDLIST_START_FROM_1 = $00040000;
  540. IME_PROP_UNICODE = $00080000;
  541. IME_PROP_COMPLETE_ON_UNSELECT = $00100000;
  542. // IME UICapability bits
  543. UI_CAP_2700 = $00000001;
  544. UI_CAP_ROT90 = $00000002;
  545. UI_CAP_ROTANY = $00000004;
  546. // ImmSetCompositionString Capability bits
  547. SCS_CAP_COMPSTR = $00000001;
  548. SCS_CAP_MAKEREAD = $00000002;
  549. SCS_CAP_SETRECONVERTSTRING = $00000004;
  550. // IME WM_IME_SELECT inheritance Capability bits
  551. SELECT_CAP_CONVERSION = $00000001;
  552. SELECT_CAP_SENTENCE = $00000002;
  553. // ID for deIndex of ImmGetGuideLine
  554. GGL_LEVEL = $00000001;
  555. GGL_INDEX = $00000002;
  556. GGL_STRING = $00000003;
  557. GGL_PRIVATE = $00000004;
  558. // ID for dwLevel of GUIDELINE Structure
  559. GL_LEVEL_NOGUIDELINE = $00000000;
  560. GL_LEVEL_FATAL = $00000001;
  561. GL_LEVEL_ERROR = $00000002;
  562. GL_LEVEL_WARNING = $00000003;
  563. GL_LEVEL_INFORMATION = $00000004;
  564. // ID for dwIndex of GUIDELINE Structure
  565. GL_ID_UNKNOWN = $00000000;
  566. GL_ID_NOMODULE = $00000001;
  567. GL_ID_NODICTIONARY = $00000010;
  568. GL_ID_CANNOTSAVE = $00000011;
  569. GL_ID_NOCONVERT = $00000020;
  570. GL_ID_TYPINGERROR = $00000021;
  571. GL_ID_TOOMANYSTROKE = $00000022;
  572. GL_ID_READINGCONFLICT = $00000023;
  573. GL_ID_INPUTREADING = $00000024;
  574. GL_ID_INPUTRADICAL = $00000025;
  575. GL_ID_INPUTCODE = $00000026;
  576. GL_ID_INPUTSYMBOL = $00000027;
  577. GL_ID_CHOOSECANDIDATE = $00000028;
  578. GL_ID_REVERSECONVERSION = $00000029;
  579. GL_ID_PRIVATE_FIRST = $00008000;
  580. GL_ID_PRIVATE_LAST = $0000FFFF;
  581. // ID for dwIndex of ImmGetProperty
  582. IGP_GETIMEVERSION = -4;
  583. IGP_PROPERTY = $00000004;
  584. IGP_CONVERSION = $00000008;
  585. IGP_SENTENCE = $0000000c;
  586. IGP_UI = $00000010;
  587. IGP_SETCOMPSTR = $00000014;
  588. IGP_SELECT = $00000018;
  589. // dwIndex for ImmSetCompositionString API
  590. SCS_SETSTR = (GCS_COMPREADSTR or GCS_COMPSTR);
  591. SCS_CHANGEATTR = (GCS_COMPREADATTR or GCS_COMPATTR);
  592. SCS_CHANGECLAUSE = (GCS_COMPREADCLAUSE or GCS_COMPCLAUSE);
  593. SCS_SETRECONVERTSTRING = $00010000;
  594. SCS_QUERYRECONVERTSTRING = $00020000;
  595. // attribute for COMPOSITIONSTRING Structure
  596. ATTR_INPUT = $00;
  597. ATTR_TARGET_CONVERTED = $01;
  598. ATTR_CONVERTED = $02;
  599. ATTR_TARGET_NOTCONVERTED = $03;
  600. ATTR_INPUT_ERROR = $04;
  601. ATTR_FIXEDCONVERTED = $05;
  602. // bit field for IMC_SETCOMPOSITIONWINDOW, IMC_SETCANDIDATEWINDOW
  603. CFS_DEFAULT = $0000;
  604. CFS_RECT = $0001;
  605. CFS_POINT = $0002;
  606. CFS_FORCE_POSITION = $0020;
  607. CFS_CANDIDATEPOS = $0040;
  608. CFS_EXCLUDE = $0080;
  609. // conversion direction for ImmGetConversionList
  610. GCL_CONVERSION = $0001;
  611. GCL_REVERSECONVERSION = $0002;
  612. GCL_REVERSE_LENGTH = $0003;
  613. // bit field for conversion mode
  614. // IME_CMODE_HANGEUL is old name of IME_CMODE_HANGUL. It will be gone eventually.
  615. IME_CMODE_HANGEUL = IME_CMODE_NATIVE;
  616. IME_CMODE_SOFTKBD = $0080;
  617. IME_CMODE_NOCONVERSION = $0100;
  618. IME_CMODE_EUDC = $0200;
  619. IME_CMODE_SYMBOL = $0400;
  620. IME_CMODE_FIXED = $0800;
  621. IME_CMODE_RESERVED = $F0000000;
  622. // bit field for sentence mode
  623. IME_SMODE_NONE = $0000;
  624. IME_SMODE_PLAURALCLAUSE = $0001;
  625. IME_SMODE_SINGLECONVERT = $0002;
  626. IME_SMODE_AUTOMATIC = $0004;
  627. IME_SMODE_PHRASEPREDICT = $0008;
  628. IME_SMODE_CONVERSATION = $0010;
  629. IME_SMODE_RESERVED = $0000F000;
  630. // style of candidate
  631. IME_CAND_UNKNOWN = $0000;
  632. IME_CAND_READ = $0001;
  633. IME_CAND_CODE = $0002;
  634. IME_CAND_MEANING = $0003;
  635. IME_CAND_RADICAL = $0004;
  636. IME_CAND_STROKE = $0005;
  637. // wParam of report message WM_IME_NOTIFY
  638. IMN_CLOSESTATUSWINDOW = $0001;
  639. IMN_OPENSTATUSWINDOW = $0002;
  640. IMN_CHANGECANDIDATE = $0003;
  641. IMN_CLOSECANDIDATE = $0004;
  642. IMN_OPENCANDIDATE = $0005;
  643. IMN_SETCONVERSIONMODE = $0006;
  644. IMN_SETSENTENCEMODE = $0007;
  645. IMN_SETOPENSTATUS = $0008;
  646. IMN_SETCANDIDATEPOS = $0009;
  647. IMN_SETCOMPOSITIONFONT = $000A;
  648. IMN_SETCOMPOSITIONWINDOW = $000B;
  649. IMN_SETSTATUSWINDOWPOS = $000C;
  650. IMN_GUIDELINE = $000D;
  651. IMN_PRIVATE = $000E;
  652. // wParam of report message WM_IME_REQUEST
  653. IMR_COMPOSITIONWINDOW = $0001;
  654. IMR_CANDIDATEWINDOW = $0002;
  655. IMR_COMPOSITIONFONT = $0003;
  656. IMR_RECONVERTSTRING = $0004;
  657. IMR_CONFIRMRECONVERTSTRING = $0005;
  658. IMR_QUERYCHARPOSITION = $0006;
  659. IMR_DOCUMENTFEED = $0007;
  660. // error code of ImmGetCompositionString
  661. IMM_ERROR_NODATA = -1;
  662. IMM_ERROR_GENERAL = -2;
  663. // dialog mode of ImmConfigureIME
  664. IME_CONFIG_GENERAL = 1;
  665. IME_CONFIG_REGISTERWORD = 2;
  666. IME_CONFIG_SELECTDICTIONARY = 3;
  667. // flags for ImmEscape
  668. IME_ESC_QUERY_SUPPORT = $0003;
  669. IME_ESC_RESERVED_FIRST = $0004;
  670. IME_ESC_RESERVED_LAST = $07FF;
  671. IME_ESC_PRIVATE_FIRST = $0800;
  672. IME_ESC_PRIVATE_LAST = $0FFF;
  673. IME_ESC_SEQUENCE_TO_INTERNAL = $1001;
  674. IME_ESC_GET_EUDC_DICTIONARY = $1003;
  675. IME_ESC_SET_EUDC_DICTIONARY = $1004;
  676. IME_ESC_MAX_KEY = $1005;
  677. IME_ESC_IME_NAME = $1006;
  678. IME_ESC_SYNC_HOTKEY = $1007;
  679. IME_ESC_HANJA_MODE = $1008;
  680. IME_ESC_AUTOMATA = $1009;
  681. IME_ESC_PRIVATE_HOTKEY = $100a;
  682. IME_ESC_GETHELPFILENAME = $100b;
  683. // style of word registration
  684. IME_REGWORD_STYLE_EUDC = $00000001;
  685. IME_REGWORD_STYLE_USER_FIRST = $80000000;
  686. IME_REGWORD_STYLE_USER_LAST = $FFFFFFFF;
  687. // dwFlags for ImmAssociateContextEx
  688. IACE_CHILDREN = $0001;
  689. IACE_DEFAULT = $0010;
  690. IACE_IGNORENOCONTEXT = $0020;
  691. // dwFlags for ImmGetImeMenuItems
  692. IGIMIF_RIGHTMENU = $0001;
  693. // dwType for ImmGetImeMenuItems
  694. IGIMII_CMODE = $0001;
  695. IGIMII_SMODE = $0002;
  696. IGIMII_CONFIGURE = $0004;
  697. IGIMII_TOOLS = $0008;
  698. IGIMII_HELP = $0010;
  699. IGIMII_OTHER = $0020;
  700. IGIMII_INPUTTOOLS = $0040;
  701. // fType of IMEMENUITEMINFO structure
  702. IMFT_RADIOCHECK = $00001;
  703. IMFT_SEPARATOR = $00002;
  704. IMFT_SUBMENU = $00004;
  705. // fState of IMEMENUITEMINFO structure
  706. IMFS_GRAYED = MFS_GRAYED;
  707. IMFS_DISABLED = MFS_DISABLED;
  708. IMFS_CHECKED = MFS_CHECKED;
  709. IMFS_HILITE = MFS_HILITE;
  710. IMFS_ENABLED = MFS_ENABLED;
  711. IMFS_UNCHECKED = MFS_UNCHECKED;
  712. IMFS_UNHILITE = MFS_UNHILITE;
  713. IMFS_DEFAULT = MFS_DEFAULT;
  714. // type of soft keyboard
  715. // for Windows Tranditional Chinese Edition
  716. SOFTKEYBOARD_TYPE_T1 = $0001;
  717. // for Windows Simplified Chinese Edition
  718. SOFTKEYBOARD_TYPE_C1 = $0002;
  719. implementation
  720. end.