home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / vc98 / include / imm.h < prev    next >
C/C++ Source or Header  |  1998-04-25  |  25KB  |  703 lines

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