home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 2000 May / PCP163A.iso / Runimage / Cbuilder4 / Include / IMM.H < prev    next >
Encoding:
C/C++ Source or Header  |  1999-01-26  |  24.7 KB  |  705 lines

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