home *** CD-ROM | disk | FTP | other *** search
/ PC Format (South-Africa) 2001 June / PCFJune.iso / Xenon / C++ / FreeCommandLineTools.exe / Include / imm.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-01-31  |  25.8 KB  |  712 lines

  1. /**********************************************************************/
  2. /*      imm.h - Input Method Manager definitions                      */
  3. /*                                                                    */
  4. /*      Copyright (c) 1993-1998  Microsoft Corporation                */
  5. /**********************************************************************/
  6.  
  7. #ifndef _IMM_
  8. #pragma option push -b -a8 -pc -A- /*P_O_Push*/
  9. #define _IMM_
  10.  
  11.  
  12. #ifdef __cplusplus
  13. extern "C" {
  14. #endif
  15.  
  16.  
  17. #ifndef _IMM_SDK_DEFINED_
  18. #define _IMM_SDK_DEFINED_
  19.  
  20. #if (WINVER >= 0x040A)
  21. DECLARE_HANDLE(HIMC);
  22. DECLARE_HANDLE(HIMCC);
  23. #else
  24. typedef DWORD   HIMC;
  25. typedef DWORD   HIMCC;
  26. #endif /* WINVER >= 0x040A */
  27.  
  28. typedef HKL FAR  *LPHKL;
  29. typedef UINT FAR *LPUINT;
  30.  
  31. typedef struct tagCOMPOSITIONFORM {
  32.     DWORD dwStyle;
  33.     POINT ptCurrentPos;
  34.     RECT  rcArea;
  35. } COMPOSITIONFORM, *PCOMPOSITIONFORM, NEAR *NPCOMPOSITIONFORM, FAR *LPCOMPOSITIONFORM;
  36.  
  37.  
  38. typedef struct tagCANDIDATEFORM {
  39.     DWORD dwIndex;
  40.     DWORD dwStyle;
  41.     POINT ptCurrentPos;
  42.     RECT  rcArea;
  43. } CANDIDATEFORM, *PCANDIDATEFORM, NEAR *NPCANDIDATEFORM, FAR *LPCANDIDATEFORM;
  44.  
  45.  
  46. typedef struct tagCANDIDATELIST {
  47.     DWORD dwSize;
  48.     DWORD dwStyle;
  49.     DWORD dwCount;
  50.     DWORD dwSelection;
  51.     DWORD dwPageStart;
  52.     DWORD dwPageSize;
  53.     DWORD dwOffset[1];
  54. } CANDIDATELIST, *PCANDIDATELIST, NEAR *NPCANDIDATELIST, FAR *LPCANDIDATELIST;
  55.  
  56. typedef struct tagREGISTERWORDA {
  57.     LPSTR   lpReading;
  58.     LPSTR   lpWord;
  59. } REGISTERWORDA, *PREGISTERWORDA, NEAR *NPREGISTERWORDA, FAR *LPREGISTERWORDA;
  60. typedef struct tagREGISTERWORDW {
  61.     LPWSTR  lpReading;
  62.     LPWSTR  lpWord;
  63. } REGISTERWORDW, *PREGISTERWORDW, NEAR *NPREGISTERWORDW, FAR *LPREGISTERWORDW;
  64. #ifdef UNICODE
  65. typedef REGISTERWORDW REGISTERWORD;
  66. typedef PREGISTERWORDW PREGISTERWORD;
  67. typedef NPREGISTERWORDW NPREGISTERWORD;
  68. typedef LPREGISTERWORDW LPREGISTERWORD;
  69. #else
  70. typedef REGISTERWORDA REGISTERWORD;
  71. typedef PREGISTERWORDA PREGISTERWORD;
  72. typedef NPREGISTERWORDA NPREGISTERWORD;
  73. typedef LPREGISTERWORDA LPREGISTERWORD;
  74. #endif // UNICODE
  75.  
  76. #if (WINVER >= 0x040A)
  77.  
  78. typedef struct tagRECONVERTSTRING {
  79.     DWORD dwSize;
  80.     DWORD dwVersion;
  81.     DWORD dwStrLen;
  82.     DWORD dwStrOffset;
  83.     DWORD dwCompStrLen;
  84.     DWORD dwCompStrOffset;
  85.     DWORD dwTargetStrLen;
  86.     DWORD dwTargetStrOffset;
  87. } RECONVERTSTRING, *PRECONVERTSTRING, NEAR *NPRECONVERTSTRING, FAR *LPRECONVERTSTRING;
  88.  
  89. #endif /* WINVER >= 0x040A */
  90.  
  91. #define STYLE_DESCRIPTION_SIZE  32
  92.  
  93. typedef struct tagSTYLEBUFA {
  94.     DWORD       dwStyle;
  95.     CHAR        szDescription[STYLE_DESCRIPTION_SIZE];
  96. } STYLEBUFA, *PSTYLEBUFA, NEAR *NPSTYLEBUFA, FAR *LPSTYLEBUFA;
  97. typedef struct tagSTYLEBUFW {
  98.     DWORD       dwStyle;
  99.     WCHAR       szDescription[STYLE_DESCRIPTION_SIZE];
  100. } STYLEBUFW, *PSTYLEBUFW, NEAR *NPSTYLEBUFW, FAR *LPSTYLEBUFW;
  101. #ifdef UNICODE
  102. typedef STYLEBUFW STYLEBUF;
  103. typedef PSTYLEBUFW PSTYLEBUF;
  104. typedef NPSTYLEBUFW NPSTYLEBUF;
  105. typedef LPSTYLEBUFW LPSTYLEBUF;
  106. #else
  107. typedef STYLEBUFA STYLEBUF;
  108. typedef PSTYLEBUFA PSTYLEBUF;
  109. typedef NPSTYLEBUFA NPSTYLEBUF;
  110. typedef LPSTYLEBUFA LPSTYLEBUF;
  111. #endif // UNICODE
  112.  
  113.  
  114. #if (WINVER >= 0x040A)
  115.  
  116. #define IMEMENUITEM_STRING_SIZE 80
  117.  
  118. typedef struct tagIMEMENUITEMINFOA {
  119.     UINT        cbSize;
  120.     UINT        fType;
  121.     UINT        fState;
  122.     UINT        wID;
  123.     HBITMAP     hbmpChecked;
  124.     HBITMAP     hbmpUnchecked;
  125.     DWORD       dwItemData;
  126.     CHAR        szString[IMEMENUITEM_STRING_SIZE];
  127.     HBITMAP     hbmpItem;
  128. } IMEMENUITEMINFOA, *PIMEMENUITEMINFOA, NEAR *NPIMEMENUITEMINFOA, FAR *LPIMEMENUITEMINFOA;
  129. typedef struct tagIMEMENUITEMINFOW {
  130.     UINT        cbSize;
  131.     UINT        fType;
  132.     UINT        fState;
  133.     UINT        wID;
  134.     HBITMAP     hbmpChecked;
  135.     HBITMAP     hbmpUnchecked;
  136.     DWORD       dwItemData;
  137.     WCHAR       szString[IMEMENUITEM_STRING_SIZE];
  138.     HBITMAP     hbmpItem;
  139. } IMEMENUITEMINFOW, *PIMEMENUITEMINFOW, NEAR *NPIMEMENUITEMINFOW, FAR *LPIMEMENUITEMINFOW;
  140. #ifdef UNICODE
  141. typedef IMEMENUITEMINFOW IMEMENUITEMINFO;
  142. typedef PIMEMENUITEMINFOW PIMEMENUITEMINFO;
  143. typedef NPIMEMENUITEMINFOW NPIMEMENUITEMINFO;
  144. typedef LPIMEMENUITEMINFOW LPIMEMENUITEMINFO;
  145. #else
  146. typedef IMEMENUITEMINFOA IMEMENUITEMINFO;
  147. typedef PIMEMENUITEMINFOA PIMEMENUITEMINFO;
  148. typedef NPIMEMENUITEMINFOA NPIMEMENUITEMINFO;
  149. typedef LPIMEMENUITEMINFOA LPIMEMENUITEMINFO;
  150. #endif // UNICODE
  151.  
  152. typedef struct tagIMECHARPOSITION {
  153.     DWORD       dwSize;
  154.     DWORD       dwCharPos;
  155.     POINT       pt;
  156.     UINT        cLineHeight;
  157.     RECT        rcDocument;
  158. } IMECHARPOSITION, *PIMECHARPOSITION, NEAR *NPIMECHARPOSITION, FAR *LPIMECHARPOSITION;
  159.  
  160. typedef BOOL    (CALLBACK* IMCENUMPROC)(HIMC, LPARAM);
  161.  
  162. #endif /* WINVER >= 0x040A */
  163.  
  164. // prototype of IMM API
  165.  
  166. HKL  WINAPI ImmInstallIMEA(IN LPCSTR lpszIMEFileName, IN LPCSTR lpszLayoutText);
  167. HKL  WINAPI ImmInstallIMEW(IN LPCWSTR lpszIMEFileName, IN LPCWSTR lpszLayoutText);
  168. #ifdef UNICODE
  169. #define ImmInstallIME  ImmInstallIMEW
  170. #else
  171. #define ImmInstallIME  ImmInstallIMEA
  172. #endif // !UNICODE
  173.  
  174. HWND WINAPI ImmGetDefaultIMEWnd(IN HWND);
  175.  
  176. UINT WINAPI ImmGetDescriptionA(IN HKL, OUT LPSTR, IN UINT uBufLen);
  177. UINT WINAPI ImmGetDescriptionW(IN HKL, OUT LPWSTR, IN UINT uBufLen);
  178. #ifdef UNICODE
  179. #define ImmGetDescription  ImmGetDescriptionW
  180. #else
  181. #define ImmGetDescription  ImmGetDescriptionA
  182. #endif // !UNICODE
  183.  
  184. UINT WINAPI ImmGetIMEFileNameA(IN HKL, OUT LPSTR, IN UINT uBufLen);
  185. UINT WINAPI ImmGetIMEFileNameW(IN HKL, OUT LPWSTR, IN UINT uBufLen);
  186. #ifdef UNICODE
  187. #define ImmGetIMEFileName  ImmGetIMEFileNameW
  188. #else
  189. #define ImmGetIMEFileName  ImmGetIMEFileNameA
  190. #endif // !UNICODE
  191.  
  192. DWORD WINAPI ImmGetProperty(IN HKL, IN DWORD);
  193.  
  194. BOOL WINAPI ImmIsIME(IN HKL);
  195.  
  196. BOOL WINAPI ImmSimulateHotKey(IN HWND, IN DWORD);
  197.  
  198. HIMC WINAPI ImmCreateContext(void);
  199. BOOL WINAPI ImmDestroyContext(IN HIMC);
  200. HIMC WINAPI ImmGetContext(IN HWND);
  201. BOOL WINAPI ImmReleaseContext(IN HWND, IN HIMC);
  202. HIMC WINAPI ImmAssociateContext(IN HWND, IN HIMC);
  203. #if (WINVER >= 0x040A)
  204. BOOL WINAPI ImmAssociateContextEx(IN HWND, IN HIMC, IN DWORD);
  205. #endif /* WINVER >= 0x040A */
  206.  
  207. LONG  WINAPI ImmGetCompositionStringA(IN HIMC, IN DWORD, OUT LPVOID, IN DWORD);
  208. LONG  WINAPI ImmGetCompositionStringW(IN HIMC, IN DWORD, OUT LPVOID, IN DWORD);
  209. #ifdef UNICODE
  210. #define ImmGetCompositionString  ImmGetCompositionStringW
  211. #else
  212. #define ImmGetCompositionString  ImmGetCompositionStringA
  213. #endif // !UNICODE
  214.  
  215. BOOL  WINAPI ImmSetCompositionStringA(IN HIMC, IN DWORD dwIndex, IN LPVOID lpComp, IN DWORD, IN LPVOID lpRead, IN DWORD);
  216. BOOL  WINAPI ImmSetCompositionStringW(IN HIMC, IN DWORD dwIndex, IN LPVOID lpComp, IN DWORD, IN LPVOID lpRead, IN DWORD);
  217. #ifdef UNICODE
  218. #define ImmSetCompositionString  ImmSetCompositionStringW
  219. #else
  220. #define ImmSetCompositionString  ImmSetCompositionStringA
  221. #endif // !UNICODE
  222.  
  223. DWORD WINAPI ImmGetCandidateListCountA(IN HIMC, OUT LPDWORD lpdwListCount);
  224. DWORD WINAPI ImmGetCandidateListCountW(IN HIMC, OUT LPDWORD lpdwListCount);
  225. #ifdef UNICODE
  226. #define ImmGetCandidateListCount  ImmGetCandidateListCountW
  227. #else
  228. #define ImmGetCandidateListCount  ImmGetCandidateListCountA
  229. #endif // !UNICODE
  230.  
  231. DWORD WINAPI ImmGetCandidateListA(IN HIMC, IN DWORD deIndex, OUT LPCANDIDATELIST, IN DWORD dwBufLen);
  232. DWORD WINAPI ImmGetCandidateListW(IN HIMC, IN DWORD deIndex, OUT LPCANDIDATELIST, IN DWORD dwBufLen);
  233. #ifdef UNICODE
  234. #define ImmGetCandidateList  ImmGetCandidateListW
  235. #else
  236. #define ImmGetCandidateList  ImmGetCandidateListA
  237. #endif // !UNICODE
  238.  
  239. DWORD WINAPI ImmGetGuideLineA(IN HIMC, IN DWORD dwIndex, OUT LPSTR, IN DWORD dwBufLen);
  240. DWORD WINAPI ImmGetGuideLineW(IN HIMC, IN DWORD dwIndex, OUT LPWSTR, IN DWORD dwBufLen);
  241. #ifdef UNICODE
  242. #define ImmGetGuideLine  ImmGetGuideLineW
  243. #else
  244. #define ImmGetGuideLine  ImmGetGuideLineA
  245. #endif // !UNICODE
  246.  
  247. BOOL WINAPI ImmGetConversionStatus(IN HIMC, OUT LPDWORD, OUT LPDWORD);
  248. BOOL WINAPI ImmSetConversionStatus(IN HIMC, IN DWORD, IN DWORD);
  249. BOOL WINAPI ImmGetOpenStatus(IN HIMC);
  250. BOOL WINAPI ImmSetOpenStatus(IN HIMC, IN BOOL);
  251.  
  252. #if defined(_WINGDI_) && !defined(NOGDI)
  253. BOOL WINAPI ImmGetCompositionFontA(IN HIMC, OUT LPLOGFONTA);
  254. BOOL WINAPI ImmGetCompositionFontW(IN HIMC, OUT LPLOGFONTW);
  255. #ifdef UNICODE
  256. #define ImmGetCompositionFont  ImmGetCompositionFontW
  257. #else
  258. #define ImmGetCompositionFont  ImmGetCompositionFontA
  259. #endif // !UNICODE
  260.  
  261. BOOL WINAPI ImmSetCompositionFontA(IN HIMC, IN LPLOGFONTA);
  262. BOOL WINAPI ImmSetCompositionFontW(IN HIMC, IN LPLOGFONTW);
  263. #ifdef UNICODE
  264. #define ImmSetCompositionFont  ImmSetCompositionFontW
  265. #else
  266. #define ImmSetCompositionFont  ImmSetCompositionFontA
  267. #endif // !UNICODE
  268. #endif  // defined(_WINGDI_) && !defined(NOGDI)
  269.  
  270. BOOL    WINAPI ImmConfigureIMEA(IN HKL, IN HWND, IN DWORD, IN LPVOID);
  271. BOOL    WINAPI ImmConfigureIMEW(IN HKL, IN HWND, IN DWORD, IN LPVOID);
  272. #ifdef UNICODE
  273. #define ImmConfigureIME  ImmConfigureIMEW
  274. #else
  275. #define ImmConfigureIME  ImmConfigureIMEA
  276. #endif // !UNICODE
  277.  
  278. LRESULT WINAPI ImmEscapeA(IN HKL, IN HIMC, IN UINT, IN LPVOID);
  279. LRESULT WINAPI ImmEscapeW(IN HKL, IN HIMC, IN UINT, IN LPVOID);
  280. #ifdef UNICODE
  281. #define ImmEscape  ImmEscapeW
  282. #else
  283. #define ImmEscape  ImmEscapeA
  284. #endif // !UNICODE
  285.  
  286. DWORD   WINAPI ImmGetConversionListA(IN HKL, IN HIMC, IN LPCSTR, OUT LPCANDIDATELIST, IN DWORD dwBufLen, IN UINT uFlag);
  287. DWORD   WINAPI ImmGetConversionListW(IN HKL, IN HIMC, IN LPCWSTR, OUT LPCANDIDATELIST, IN DWORD dwBufLen, IN UINT uFlag);
  288. #ifdef UNICODE
  289. #define ImmGetConversionList  ImmGetConversionListW
  290. #else
  291. #define ImmGetConversionList  ImmGetConversionListA
  292. #endif // !UNICODE
  293.  
  294. BOOL    WINAPI ImmNotifyIME(IN HIMC, IN DWORD dwAction, IN DWORD dwIndex, IN DWORD dwValue);
  295.  
  296. BOOL WINAPI ImmGetStatusWindowPos(IN HIMC, OUT LPPOINT);
  297. BOOL WINAPI ImmSetStatusWindowPos(IN HIMC, IN LPPOINT);
  298. BOOL WINAPI ImmGetCompositionWindow(IN HIMC, OUT LPCOMPOSITIONFORM);
  299. BOOL WINAPI ImmSetCompositionWindow(IN HIMC, IN LPCOMPOSITIONFORM);
  300. BOOL WINAPI ImmGetCandidateWindow(IN HIMC, IN DWORD, OUT LPCANDIDATEFORM);
  301. BOOL WINAPI ImmSetCandidateWindow(IN HIMC, IN LPCANDIDATEFORM);
  302.  
  303. BOOL WINAPI ImmIsUIMessageA(IN HWND, IN UINT, IN WPARAM, IN LPARAM);
  304. BOOL WINAPI ImmIsUIMessageW(IN HWND, IN UINT, IN WPARAM, IN LPARAM);
  305. #ifdef UNICODE
  306. #define ImmIsUIMessage  ImmIsUIMessageW
  307. #else
  308. #define ImmIsUIMessage  ImmIsUIMessageA
  309. #endif // !UNICODE
  310.  
  311.  
  312. UINT WINAPI ImmGetVirtualKey(IN HWND);
  313.  
  314. typedef int (CALLBACK *REGISTERWORDENUMPROCA)(LPCSTR, DWORD, LPCSTR, LPVOID);
  315. typedef int (CALLBACK *REGISTERWORDENUMPROCW)(LPCWSTR, DWORD, LPCWSTR, LPVOID);
  316. #ifdef UNICODE
  317. #define REGISTERWORDENUMPROC  REGISTERWORDENUMPROCW
  318. #else
  319. #define REGISTERWORDENUMPROC  REGISTERWORDENUMPROCA
  320. #endif // !UNICODE
  321.  
  322. BOOL WINAPI ImmRegisterWordA(IN HKL, IN LPCSTR lpszReading, IN DWORD, IN LPCSTR lpszRegister);
  323. BOOL WINAPI ImmRegisterWordW(IN HKL, IN LPCWSTR lpszReading, IN DWORD, IN LPCWSTR lpszRegister);
  324. #ifdef UNICODE
  325. #define ImmRegisterWord  ImmRegisterWordW
  326. #else
  327. #define ImmRegisterWord  ImmRegisterWordA
  328. #endif // !UNICODE
  329.  
  330. BOOL WINAPI ImmUnregisterWordA(IN HKL, IN LPCSTR lpszReading, IN DWORD, IN LPCSTR lpszUnregister);
  331. BOOL WINAPI ImmUnregisterWordW(IN HKL, IN LPCWSTR lpszReading, IN DWORD, IN LPCWSTR lpszUnregister);
  332. #ifdef UNICODE
  333. #define ImmUnregisterWord  ImmUnregisterWordW
  334. #else
  335. #define ImmUnregisterWord  ImmUnregisterWordA
  336. #endif // !UNICODE
  337.  
  338. UINT WINAPI ImmGetRegisterWordStyleA(IN HKL, IN UINT nItem, OUT LPSTYLEBUFA);
  339. UINT WINAPI ImmGetRegisterWordStyleW(IN HKL, IN UINT nItem, OUT LPSTYLEBUFW);
  340. #ifdef UNICODE
  341. #define ImmGetRegisterWordStyle  ImmGetRegisterWordStyleW
  342. #else
  343. #define ImmGetRegisterWordStyle  ImmGetRegisterWordStyleA
  344. #endif // !UNICODE
  345.  
  346. UINT WINAPI ImmEnumRegisterWordA(IN HKL, IN REGISTERWORDENUMPROCA, IN LPCSTR lpszReading, IN DWORD, IN LPCSTR lpszRegister, IN LPVOID);
  347. UINT WINAPI ImmEnumRegisterWordW(IN HKL, IN REGISTERWORDENUMPROCW, IN LPCWSTR lpszReading, IN DWORD, IN LPCWSTR lpszRegister, IN LPVOID);
  348. #ifdef UNICODE
  349. #define ImmEnumRegisterWord  ImmEnumRegisterWordW
  350. #else
  351. #define ImmEnumRegisterWord  ImmEnumRegisterWordA
  352. #endif // !UNICODE
  353.  
  354. #if (WINVER >= 0x040A)
  355. BOOL WINAPI ImmDisableIME(IN DWORD);
  356. BOOL WINAPI ImmEnumInputContext(DWORD idThread, IMCENUMPROC lpfn, LPARAM lParam);
  357. DWORD WINAPI ImmGetImeMenuItemsA(IN HIMC, IN DWORD, IN DWORD, OUT LPIMEMENUITEMINFOA, OUT LPIMEMENUITEMINFOA, IN DWORD);
  358. DWORD WINAPI ImmGetImeMenuItemsW(IN HIMC, IN DWORD, IN DWORD, OUT LPIMEMENUITEMINFOW, OUT LPIMEMENUITEMINFOW, IN DWORD);
  359. #ifdef UNICODE
  360. #define ImmGetImeMenuItems  ImmGetImeMenuItemsW
  361. #else
  362. #define ImmGetImeMenuItems  ImmGetImeMenuItemsA
  363. #endif // !UNICODE
  364. #endif /* WINVER >= 0x040A */
  365.  
  366. // wParam for WM_IME_CONTROL
  367. #define IMC_GETCANDIDATEPOS             0x0007
  368. #define IMC_SETCANDIDATEPOS             0x0008
  369. #define IMC_GETCOMPOSITIONFONT          0x0009
  370. #define IMC_SETCOMPOSITIONFONT          0x000A
  371. #define IMC_GETCOMPOSITIONWINDOW        0x000B
  372. #define IMC_SETCOMPOSITIONWINDOW        0x000C
  373. #define IMC_GETSTATUSWINDOWPOS          0x000F
  374. #define IMC_SETSTATUSWINDOWPOS          0x0010
  375. #define IMC_CLOSESTATUSWINDOW           0x0021
  376. #define IMC_OPENSTATUSWINDOW            0x0022
  377.  
  378.  
  379. // dwAction for ImmNotifyIME
  380. #define NI_OPENCANDIDATE                0x0010
  381. #define NI_CLOSECANDIDATE               0x0011
  382. #define NI_SELECTCANDIDATESTR           0x0012
  383. #define NI_CHANGECANDIDATELIST          0x0013
  384. #define NI_FINALIZECONVERSIONRESULT     0x0014
  385. #define NI_COMPOSITIONSTR               0x0015
  386. #define NI_SETCANDIDATE_PAGESTART       0x0016
  387. #define NI_SETCANDIDATE_PAGESIZE        0x0017
  388. #define NI_IMEMENUSELECTED              0x0018
  389.  
  390. // lParam for WM_IME_SETCONTEXT
  391. #define ISC_SHOWUICANDIDATEWINDOW       0x00000001
  392. #define ISC_SHOWUICOMPOSITIONWINDOW     0x80000000
  393. #define ISC_SHOWUIGUIDELINE             0x40000000
  394. #define ISC_SHOWUIALLCANDIDATEWINDOW    0x0000000F
  395. #define ISC_SHOWUIALL                   0xC000000F
  396.  
  397.  
  398. // dwIndex for ImmNotifyIME/NI_COMPOSITIONSTR
  399. #define CPS_COMPLETE                    0x0001
  400. #define CPS_CONVERT                     0x0002
  401. #define CPS_REVERT                      0x0003
  402. #define CPS_CANCEL                      0x0004
  403.  
  404. // the modifiers of hot key
  405. #define MOD_ALT                         0x0001
  406. #define MOD_CONTROL                     0x0002
  407. #define MOD_SHIFT                       0x0004
  408.  
  409. #define MOD_LEFT                        0x8000
  410. #define MOD_RIGHT                       0x4000
  411.  
  412. #define MOD_ON_KEYUP                    0x0800
  413. #define MOD_IGNORE_ALL_MODIFIER         0x0400
  414.  
  415. // Windows for Simplified Chinese Edition hot key ID from 0x10 - 0x2F
  416. #define IME_CHOTKEY_IME_NONIME_TOGGLE           0x10
  417. #define IME_CHOTKEY_SHAPE_TOGGLE                0x11
  418. #define IME_CHOTKEY_SYMBOL_TOGGLE               0x12
  419.  
  420. // Windows for Japanese Edition hot key ID from 0x30 - 0x4F
  421. #define IME_JHOTKEY_CLOSE_OPEN                  0x30
  422.  
  423. // Windows for Korean Edition hot key ID from 0x50 - 0x6F
  424. #define IME_KHOTKEY_SHAPE_TOGGLE                0x50
  425. #define IME_KHOTKEY_HANJACONVERT                0x51
  426. #define IME_KHOTKEY_ENGLISH                     0x52
  427.  
  428. // Windows for Traditional Chinese Edition hot key ID from 0x70 - 0x8F
  429. #define IME_THOTKEY_IME_NONIME_TOGGLE           0x70
  430. #define IME_THOTKEY_SHAPE_TOGGLE                0x71
  431. #define IME_THOTKEY_SYMBOL_TOGGLE               0x72
  432.  
  433. // direct switch hot key ID from 0x100 - 0x11F
  434. #define IME_HOTKEY_DSWITCH_FIRST                0x100
  435. #define IME_HOTKEY_DSWITCH_LAST                 0x11F
  436.  
  437. // IME private hot key from 0x200 - 0x21F
  438. #define IME_HOTKEY_PRIVATE_FIRST                0x200
  439. #define IME_ITHOTKEY_RESEND_RESULTSTR           0x200
  440. #define IME_ITHOTKEY_PREVIOUS_COMPOSITION       0x201
  441. #define IME_ITHOTKEY_UISTYLE_TOGGLE             0x202
  442. #define IME_ITHOTKEY_RECONVERTSTRING            0x203
  443. #define IME_HOTKEY_PRIVATE_LAST                 0x21F
  444.  
  445.  
  446. // parameter of ImmGetCompositionString
  447. #define GCS_COMPREADSTR                 0x0001
  448. #define GCS_COMPREADATTR                0x0002
  449. #define GCS_COMPREADCLAUSE              0x0004
  450. #define GCS_COMPSTR                     0x0008
  451. #define GCS_COMPATTR                    0x0010
  452. #define GCS_COMPCLAUSE                  0x0020
  453. #define GCS_CURSORPOS                   0x0080
  454. #define GCS_DELTASTART                  0x0100
  455. #define GCS_RESULTREADSTR               0x0200
  456. #define GCS_RESULTREADCLAUSE            0x0400
  457. #define GCS_RESULTSTR                   0x0800
  458. #define GCS_RESULTCLAUSE                0x1000
  459.  
  460. // style bit flags for WM_IME_COMPOSITION
  461. #define CS_INSERTCHAR                   0x2000
  462. #define CS_NOMOVECARET                  0x4000
  463.  
  464. // IME version constants
  465. #define IMEVER_0310                     0x0003000A
  466. #define IMEVER_0400                     0x00040000
  467.  
  468.  
  469. // IME property bits
  470. #define IME_PROP_AT_CARET               0x00010000
  471. #define IME_PROP_SPECIAL_UI             0x00020000
  472. #define IME_PROP_CANDLIST_START_FROM_1  0x00040000
  473. #define IME_PROP_UNICODE                0x00080000
  474. #define IME_PROP_COMPLETE_ON_UNSELECT   0x00100000
  475.  
  476.  
  477. // IME UICapability bits
  478. #define UI_CAP_2700                     0x00000001
  479. #define UI_CAP_ROT90                    0x00000002
  480. #define UI_CAP_ROTANY                   0x00000004
  481.  
  482. // ImmSetCompositionString Capability bits
  483. #define SCS_CAP_COMPSTR                 0x00000001
  484. #define SCS_CAP_MAKEREAD                0x00000002
  485. #define SCS_CAP_SETRECONVERTSTRING      0x00000004
  486.  
  487.  
  488. // IME WM_IME_SELECT inheritance Capability bits
  489. #define SELECT_CAP_CONVERSION           0x00000001
  490. #define SELECT_CAP_SENTENCE             0x00000002
  491.  
  492.  
  493. // ID for deIndex of ImmGetGuideLine
  494. #define GGL_LEVEL                       0x00000001
  495. #define GGL_INDEX                       0x00000002
  496. #define GGL_STRING                      0x00000003
  497. #define GGL_PRIVATE                     0x00000004
  498.  
  499.  
  500. // ID for dwLevel of GUIDELINE Structure
  501. #define GL_LEVEL_NOGUIDELINE            0x00000000
  502. #define GL_LEVEL_FATAL                  0x00000001
  503. #define GL_LEVEL_ERROR                  0x00000002
  504. #define GL_LEVEL_WARNING                0x00000003
  505. #define GL_LEVEL_INFORMATION            0x00000004
  506.  
  507.  
  508. // ID for dwIndex of GUIDELINE Structure
  509. #define GL_ID_UNKNOWN                   0x00000000
  510. #define GL_ID_NOMODULE                  0x00000001
  511. #define GL_ID_NODICTIONARY              0x00000010
  512. #define GL_ID_CANNOTSAVE                0x00000011
  513. #define GL_ID_NOCONVERT                 0x00000020
  514. #define GL_ID_TYPINGERROR               0x00000021
  515. #define GL_ID_TOOMANYSTROKE             0x00000022
  516. #define GL_ID_READINGCONFLICT           0x00000023
  517. #define GL_ID_INPUTREADING              0x00000024
  518. #define GL_ID_INPUTRADICAL              0x00000025
  519. #define GL_ID_INPUTCODE                 0x00000026
  520. #define GL_ID_INPUTSYMBOL               0x00000027
  521. #define GL_ID_CHOOSECANDIDATE           0x00000028
  522. #define GL_ID_REVERSECONVERSION         0x00000029
  523. #define GL_ID_PRIVATE_FIRST             0x00008000
  524. #define GL_ID_PRIVATE_LAST              0x0000FFFF
  525.  
  526.  
  527. // ID for dwIndex of ImmGetProperty
  528. #define IGP_GETIMEVERSION               (DWORD)(-4)
  529. #define IGP_PROPERTY                    0x00000004
  530. #define IGP_CONVERSION                  0x00000008
  531. #define IGP_SENTENCE                    0x0000000c
  532. #define IGP_UI                          0x00000010
  533. #define IGP_SETCOMPSTR                  0x00000014
  534. #define IGP_SELECT                      0x00000018
  535.  
  536. // dwIndex for ImmSetCompositionString API
  537. #define SCS_SETSTR                      (GCS_COMPREADSTR|GCS_COMPSTR)
  538. #define SCS_CHANGEATTR                  (GCS_COMPREADATTR|GCS_COMPATTR)
  539. #define SCS_CHANGECLAUSE                (GCS_COMPREADCLAUSE|GCS_COMPCLAUSE)
  540. #define SCS_SETRECONVERTSTRING          0x00010000
  541. #define SCS_QUERYRECONVERTSTRING        0x00020000
  542.  
  543. // attribute for COMPOSITIONSTRING Structure
  544. #define ATTR_INPUT                      0x00
  545. #define ATTR_TARGET_CONVERTED           0x01
  546. #define ATTR_CONVERTED                  0x02
  547. #define ATTR_TARGET_NOTCONVERTED        0x03
  548. #define ATTR_INPUT_ERROR                0x04
  549. #define ATTR_FIXEDCONVERTED             0x05
  550.  
  551. // bit field for IMC_SETCOMPOSITIONWINDOW, IMC_SETCANDIDATEWINDOW
  552. #define CFS_DEFAULT                     0x0000
  553. #define CFS_RECT                        0x0001
  554. #define CFS_POINT                       0x0002
  555. #define CFS_FORCE_POSITION              0x0020
  556. #define CFS_CANDIDATEPOS                0x0040
  557. #define CFS_EXCLUDE                     0x0080
  558.  
  559. // conversion direction for ImmGetConversionList
  560. #define GCL_CONVERSION                  0x0001
  561. #define GCL_REVERSECONVERSION           0x0002
  562. #define GCL_REVERSE_LENGTH              0x0003
  563.  
  564. // bit field for conversion mode
  565. #define IME_CMODE_ALPHANUMERIC          0x0000
  566. #define IME_CMODE_NATIVE                0x0001
  567. #define IME_CMODE_CHINESE               IME_CMODE_NATIVE
  568. // IME_CMODE_HANGEUL is old name of IME_CMODE_HANGUL. It will be gone eventually.
  569. #define IME_CMODE_HANGEUL               IME_CMODE_NATIVE
  570. #define IME_CMODE_HANGUL                IME_CMODE_NATIVE
  571. #define IME_CMODE_JAPANESE              IME_CMODE_NATIVE
  572. #define IME_CMODE_KATAKANA              0x0002  // only effect under IME_CMODE_NATIVE
  573. #define IME_CMODE_LANGUAGE              0x0003
  574. #define IME_CMODE_FULLSHAPE             0x0008
  575. #define IME_CMODE_ROMAN                 0x0010
  576. #define IME_CMODE_CHARCODE              0x0020
  577. #define IME_CMODE_HANJACONVERT          0x0040
  578. #define IME_CMODE_SOFTKBD               0x0080
  579. #define IME_CMODE_NOCONVERSION          0x0100
  580. #define IME_CMODE_EUDC                  0x0200
  581. #define IME_CMODE_SYMBOL                0x0400
  582. #define IME_CMODE_FIXED                 0x0800
  583.  
  584. // bit field for sentence mode
  585. #define IME_SMODE_NONE                  0x0000
  586. #define IME_SMODE_PLAURALCLAUSE         0x0001
  587. #define IME_SMODE_SINGLECONVERT         0x0002
  588. #define IME_SMODE_AUTOMATIC             0x0004
  589. #define IME_SMODE_PHRASEPREDICT         0x0008
  590. #define IME_SMODE_CONVERSATION          0x0010
  591.  
  592. // style of candidate
  593. #define IME_CAND_UNKNOWN                0x0000
  594. #define IME_CAND_READ                   0x0001
  595. #define IME_CAND_CODE                   0x0002
  596. #define IME_CAND_MEANING                0x0003
  597. #define IME_CAND_RADICAL                0x0004
  598. #define IME_CAND_STROKE                 0x0005
  599.  
  600. // wParam of report message WM_IME_NOTIFY
  601. #define IMN_CLOSESTATUSWINDOW           0x0001
  602. #define IMN_OPENSTATUSWINDOW            0x0002
  603. #define IMN_CHANGECANDIDATE             0x0003
  604. #define IMN_CLOSECANDIDATE              0x0004
  605. #define IMN_OPENCANDIDATE               0x0005
  606. #define IMN_SETCONVERSIONMODE           0x0006
  607. #define IMN_SETSENTENCEMODE             0x0007
  608. #define IMN_SETOPENSTATUS               0x0008
  609. #define IMN_SETCANDIDATEPOS             0x0009
  610. #define IMN_SETCOMPOSITIONFONT          0x000A
  611. #define IMN_SETCOMPOSITIONWINDOW        0x000B
  612. #define IMN_SETSTATUSWINDOWPOS          0x000C
  613. #define IMN_GUIDELINE                   0x000D
  614. #define IMN_PRIVATE                     0x000E
  615.  
  616. #if (WINVER >= 0x040A)
  617. // wParam of report message WM_IME_REQUEST
  618. #define IMR_COMPOSITIONWINDOW           0x0001
  619. #define IMR_CANDIDATEWINDOW             0x0002
  620. #define IMR_COMPOSITIONFONT             0x0003
  621. #define IMR_RECONVERTSTRING             0x0004
  622. #define IMR_CONFIRMRECONVERTSTRING      0x0005
  623. #define IMR_QUERYCHARPOSITION           0x0006
  624. #define IMR_DOCUMENTFEED                0x0007
  625. #endif /* WINVER >= 0x040A */
  626.  
  627. // error code of ImmGetCompositionString
  628. #define IMM_ERROR_NODATA                (-1)
  629. #define IMM_ERROR_GENERAL               (-2)
  630.  
  631.  
  632. // dialog mode of ImmConfigureIME
  633. #define IME_CONFIG_GENERAL              1
  634. #define IME_CONFIG_REGISTERWORD         2
  635. #define IME_CONFIG_SELECTDICTIONARY     3
  636.  
  637.  
  638. // flags for ImmEscape
  639. #define IME_ESC_QUERY_SUPPORT           0x0003
  640. #define IME_ESC_RESERVED_FIRST          0x0004
  641. #define IME_ESC_RESERVED_LAST           0x07FF
  642. #define IME_ESC_PRIVATE_FIRST           0x0800
  643. #define IME_ESC_PRIVATE_LAST            0x0FFF
  644.  
  645. #define IME_ESC_SEQUENCE_TO_INTERNAL    0x1001
  646. #define IME_ESC_GET_EUDC_DICTIONARY     0x1003
  647. #define IME_ESC_SET_EUDC_DICTIONARY     0x1004
  648. #define IME_ESC_MAX_KEY                 0x1005
  649. #define IME_ESC_IME_NAME                0x1006
  650. #define IME_ESC_SYNC_HOTKEY             0x1007
  651. #define IME_ESC_HANJA_MODE              0x1008
  652. #define IME_ESC_AUTOMATA                0x1009
  653. #define IME_ESC_PRIVATE_HOTKEY          0x100a
  654. #define IME_ESC_GETHELPFILENAME         0x100b
  655. // style of word registration
  656. #define IME_REGWORD_STYLE_EUDC          0x00000001
  657. #define IME_REGWORD_STYLE_USER_FIRST    0x80000000
  658. #define IME_REGWORD_STYLE_USER_LAST     0xFFFFFFFF
  659.  
  660.  
  661. #if (WINVER >= 0x040A)
  662.  
  663. // dwFlags for ImmAssociateContextEx
  664. #define IACE_CHILDREN                   0x0001
  665. #define IACE_DEFAULT                    0x0010
  666. #define IACE_IGNORENOCONTEXT            0x0020
  667.  
  668. // dwFlags for ImmGetImeMenuItems
  669. #define IGIMIF_RIGHTMENU                0x0001
  670.  
  671. // dwType for ImmGetImeMenuItems
  672. #define IGIMII_CMODE                    0x0001
  673. #define IGIMII_SMODE                    0x0002
  674. #define IGIMII_CONFIGURE                0x0004
  675. #define IGIMII_TOOLS                    0x0008
  676. #define IGIMII_HELP                     0x0010
  677. #define IGIMII_OTHER                    0x0020
  678. #define IGIMII_INPUTTOOLS               0x0040
  679.  
  680. // fType of IMEMENUITEMINFO structure
  681. #define IMFT_RADIOCHECK 0x00001
  682. #define IMFT_SEPARATOR  0x00002
  683. #define IMFT_SUBMENU    0x00004
  684.  
  685. // fState of IMEMENUITEMINFO structure
  686. #define IMFS_GRAYED          MFS_GRAYED
  687. #define IMFS_DISABLED        MFS_DISABLED
  688. #define IMFS_CHECKED         MFS_CHECKED
  689. #define IMFS_HILITE          MFS_HILITE
  690. #define IMFS_ENABLED         MFS_ENABLED
  691. #define IMFS_UNCHECKED       MFS_UNCHECKED
  692. #define IMFS_UNHILITE        MFS_UNHILITE
  693. #define IMFS_DEFAULT         MFS_DEFAULT
  694.  
  695. #endif /* WINVER >= 0x040A */
  696.  
  697. // type of soft keyboard
  698. // for Windows Tranditional Chinese Edition
  699. #define SOFTKEYBOARD_TYPE_T1            0x0001
  700. // for Windows Simplified Chinese Edition
  701. #define SOFTKEYBOARD_TYPE_C1            0x0002
  702.  
  703.  
  704. #endif  // _IMM_SDK_DEFINED_
  705.  
  706. #ifdef __cplusplus
  707. }
  708. #endif
  709.  
  710. #pragma option pop /*P_O_Pop*/
  711. #endif  // _IMM_
  712.