home *** CD-ROM | disk | FTP | other *** search
/ Team Palmtops 7 / Palmtops_numero07.iso / WinCE / SDKWindowsCE / HandHeldPCPro30 / sdk.exe / Jupiter SDK / data1.cab / Emulation_Include_Files / imm.h < prev    next >
Encoding:
C/C++ Source or Header  |  1999-02-19  |  39.9 KB  |  1,169 lines

  1. /**********************************************************************/
  2. /*      IMM.H - Input Method Manager definitions                      */
  3. /*                                                                    */
  4. /*      Copyright (c) 1993-1998  Microsoft Corporation                */
  5. /**********************************************************************/
  6.  
  7. #ifndef _IMM_
  8. #define _IMM_        // defined if IMM.H has been included
  9.  
  10. #ifdef __cplusplus
  11. extern "C" {
  12. #endif
  13.  
  14.  
  15. typedef DWORD     HIMC;
  16. typedef DWORD     HIMCC;
  17.  
  18. #define NULLIMC    ((HIMC)0)
  19.  
  20. typedef HKL FAR  *LPHKL;
  21. typedef UINT FAR *LPUINT;
  22.  
  23.  
  24. typedef struct tagCOMPOSITIONFORM {
  25.     DWORD dwStyle;
  26.     POINT ptCurrentPos;
  27.     RECT  rcArea;
  28. } COMPOSITIONFORM, *PCOMPOSITIONFORM, NEAR *NPCOMPOSITIONFORM, FAR *LPCOMPOSITIONFORM;
  29.  
  30.  
  31. typedef struct tagCANDIDATEFORM {
  32.     DWORD dwIndex;
  33.     DWORD dwStyle;
  34.     POINT ptCurrentPos;
  35.     RECT  rcArea;
  36. } CANDIDATEFORM, *PCANDIDATEFORM, NEAR *NPCANDIDATEFORM, FAR *LPCANDIDATEFORM;
  37.  
  38.  
  39. typedef struct tagCANDIDATELIST {
  40.     DWORD dwSize;
  41.     DWORD dwStyle;
  42.     DWORD dwCount;
  43.     DWORD dwSelection;
  44.     DWORD dwPageStart;
  45.     DWORD dwPageSize;
  46.     DWORD dwOffset[1];
  47. } CANDIDATELIST, *PCANDIDATELIST, NEAR *NPCANDIDATELIST, FAR *LPCANDIDATELIST;
  48.  
  49. typedef struct tagREGISTERWORDA {
  50.     LPSTR  lpReading;
  51.     LPSTR  lpWord;
  52. } REGISTERWORDA, *PREGISTERWORDA, NEAR *NPREGISTERWORDA, FAR *LPREGISTERWORDA;
  53. typedef struct tagREGISTERWORDW {
  54.     LPWSTR  lpReading;
  55.     LPWSTR  lpWord;
  56. } REGISTERWORDW, *PREGISTERWORDW, NEAR *NPREGISTERWORDW, FAR *LPREGISTERWORDW;
  57.  
  58. #ifdef UNICODE
  59. typedef REGISTERWORDW REGISTERWORD;
  60. typedef PREGISTERWORDW PREGISTERWORD;
  61. typedef NPREGISTERWORDW NPREGISTERWORD;
  62. typedef LPREGISTERWORDW LPREGISTERWORD;
  63. #else
  64. typedef REGISTERWORDA REGISTERWORD;
  65. typedef PREGISTERWORDA PREGISTERWORD;
  66. typedef NPREGISTERWORDA NPREGISTERWORD;
  67. typedef LPREGISTERWORDA LPREGISTERWORD;
  68. #endif // UNICODE
  69.  
  70.  
  71.  
  72. #define STYLE_DESCRIPTION_SIZE  32
  73.  
  74. typedef struct tagSTYLEBUFA {
  75.     DWORD       dwStyle;
  76.     CHAR        szDescription[STYLE_DESCRIPTION_SIZE];
  77. } STYLEBUFA, *PSTYLEBUFA, NEAR *NPSTYLEBUFA, FAR *LPSTYLEBUFA;
  78. typedef struct tagSTYLEBUFW {
  79.     DWORD       dwStyle;
  80.     WCHAR       szDescription[STYLE_DESCRIPTION_SIZE];
  81. } STYLEBUFW, *PSTYLEBUFW, NEAR *NPSTYLEBUFW, FAR *LPSTYLEBUFW;
  82.  
  83. #ifdef UNICODE
  84. typedef STYLEBUFW STYLEBUF;
  85. typedef PSTYLEBUFW PSTYLEBUF;
  86. typedef NPSTYLEBUFW NPSTYLEBUF;
  87. typedef LPSTYLEBUFW LPSTYLEBUF;
  88. #else
  89. typedef STYLEBUFA STYLEBUF;
  90. typedef PSTYLEBUFA PSTYLEBUF;
  91. typedef NPSTYLEBUFA NPSTYLEBUF;
  92. typedef LPSTYLEBUFA LPSTYLEBUF;
  93. #endif // UNICODE
  94.  
  95.  
  96.  
  97. #define IMEMENUITEM_STRING_SIZE 80
  98.  
  99. typedef struct tagIMEMENUITEMINFOA {
  100.     UINT        cbSize;
  101.     UINT        fType;
  102.     UINT        fState;
  103.     UINT        wID;
  104.     HBITMAP     hbmpChecked;
  105.     HBITMAP     hbmpUnchecked;
  106.     DWORD       dwItemData;
  107.     CHAR        szString[IMEMENUITEM_STRING_SIZE];
  108.     HBITMAP     hbmpItem;
  109. } IMEMENUITEMINFOA, *PIMEMENUITEMINFOA, NEAR *NPIMEMENUITEMINFOA, FAR *LPIMEMENUITEMINFOA;
  110. typedef struct tagIMEMENUITEMINFOW {
  111.     UINT        cbSize;
  112.     UINT        fType;
  113.     UINT        fState;
  114.     UINT        wID;
  115.     HBITMAP     hbmpChecked;
  116.     HBITMAP     hbmpUnchecked;
  117.     DWORD       dwItemData;
  118.     WCHAR       szString[IMEMENUITEM_STRING_SIZE];
  119.     HBITMAP     hbmpItem;
  120. } IMEMENUITEMINFOW, *PIMEMENUITEMINFOW, NEAR *NPIMEMENUITEMINFOW, FAR *LPIMEMENUITEMINFOW;
  121. #ifdef UNICODE
  122. typedef IMEMENUITEMINFOW IMEMENUITEMINFO;
  123. typedef PIMEMENUITEMINFOW PIMEMENUITEMINFO;
  124. typedef NPIMEMENUITEMINFOW NPIMEMENUITEMINFO;
  125. typedef LPIMEMENUITEMINFOW LPIMEMENUITEMINFO;
  126. #else
  127. typedef IMEMENUITEMINFOA IMEMENUITEMINFO;
  128. typedef PIMEMENUITEMINFOA PIMEMENUITEMINFO;
  129. typedef NPIMEMENUITEMINFOA NPIMEMENUITEMINFO;
  130. typedef LPIMEMENUITEMINFOA LPIMEMENUITEMINFO;
  131. #endif // UNICODE
  132.  
  133. typedef struct tagIMECHARPOSITION {
  134.     DWORD       dwSize;
  135.     DWORD       dwCharPos;
  136.     POINT       pt;
  137.     UINT        cLineHeight;
  138.     RECT        rcDocument;
  139. } IMECHARPOSITION, *PIMECHARPOSITION, NEAR *NPIMECHARPOSITION, FAR *LPIMECHARPOSITION;
  140.  
  141.  
  142.  
  143.  
  144. // prototype of IMM API
  145.  
  146. HKL  WINAPI ImmInstallIMEW(LPCWSTR lpszIMEFileName, LPCWSTR lpszLayoutText);
  147. #ifdef UNICODE
  148. #define ImmInstallIME  ImmInstallIMEW
  149. #else
  150. #define ImmInstallIME  ImmInstallIMEA
  151. #endif // !UNICODE
  152.  
  153. HWND WINAPI ImmGetDefaultIMEWnd(HWND);
  154.  
  155. UINT WINAPI ImmGetDescriptionW(HKL, LPWSTR, UINT uBufLen);
  156. #ifdef UNICODE
  157. #define ImmGetDescription  ImmGetDescriptionW
  158. #else
  159. #define ImmGetDescription  ImmGetDescriptionA
  160. #endif // !UNICODE
  161.  
  162. UINT WINAPI ImmGetIMEFileNameW(HKL, LPWSTR, UINT uBufLen);
  163. #ifdef UNICODE
  164. #define ImmGetIMEFileName  ImmGetIMEFileNameW
  165. #else
  166. #define ImmGetIMEFileName  ImmGetIMEFileNameA
  167. #endif // !UNICODE
  168.  
  169. DWORD WINAPI ImmGetProperty(HKL, DWORD);
  170.  
  171.  
  172. BOOL WINAPI ImmIsIME(HKL);
  173.  
  174. BOOL WINAPI ImmSimulateHotKey(HWND, DWORD);
  175.  
  176. HIMC WINAPI ImmCreateContext(void);
  177. BOOL WINAPI ImmDestroyContext(HIMC);
  178. HIMC WINAPI ImmGetContext(HWND);
  179. BOOL WINAPI ImmReleaseContext(HWND, HIMC);
  180. HIMC WINAPI ImmAssociateContext(HWND, HIMC);
  181. BOOL WINAPI ImmAssociateContextEx(HWND, HIMC, DWORD);
  182.  
  183. LONG  WINAPI ImmGetCompositionStringW(HIMC, DWORD, LPVOID, DWORD);
  184. #ifdef UNICODE
  185. #define ImmGetCompositionString  ImmGetCompositionStringW
  186. #else
  187. #define ImmGetCompositionString  ImmGetCompositionStringA
  188. #endif // !UNICODE
  189.  
  190. BOOL  WINAPI ImmSetCompositionStringW(HIMC, DWORD dwIndex, LPCVOID lpComp, DWORD, LPCVOID lpRead, DWORD);
  191. #ifdef UNICODE
  192. #define ImmSetCompositionString  ImmSetCompositionStringW
  193. #else
  194. #define ImmSetCompositionString  ImmSetCompositionStringA
  195. #endif // !UNICODE
  196.  
  197. DWORD WINAPI ImmGetCandidateListCountW(HIMC, LPDWORD lpdwListCount);
  198. #ifdef UNICODE
  199. #define ImmGetCandidateListCount  ImmGetCandidateListCountW
  200. #else
  201. #define ImmGetCandidateListCount  ImmGetCandidateListCountA
  202. #endif // !UNICODE
  203.  
  204. DWORD WINAPI ImmGetCandidateListW(HIMC, DWORD deIndex, LPCANDIDATELIST, DWORD dwBufLen);
  205. #ifdef UNICODE
  206. #define ImmGetCandidateList  ImmGetCandidateListW
  207. #else
  208. #define ImmGetCandidateList  ImmGetCandidateListA
  209. #endif // !UNICODE
  210.  
  211. DWORD WINAPI ImmGetGuideLineW(HIMC, DWORD dwIndex, LPWSTR, DWORD dwBufLen);
  212. #ifdef UNICODE
  213. #define ImmGetGuideLine  ImmGetGuideLineW
  214. #else
  215. #define ImmGetGuideLine  ImmGetGuideLineA
  216. #endif // !UNICODE
  217.  
  218. BOOL WINAPI ImmGetConversionStatus(HIMC, LPDWORD, LPDWORD);
  219. BOOL WINAPI ImmSetConversionStatus(HIMC, DWORD, DWORD);
  220. BOOL WINAPI ImmGetOpenStatus(HIMC);
  221. BOOL WINAPI ImmSetOpenStatus(HIMC, BOOL);
  222.  
  223. BOOL WINAPI ImmGetCompositionFontW(HIMC, LPLOGFONTW);
  224. #ifdef UNICODE
  225. #define ImmGetCompositionFont  ImmGetCompositionFontW
  226. #else
  227. #define ImmGetCompositionFont  ImmGetCompositionFontA
  228. #endif // !UNICODE
  229.  
  230. BOOL WINAPI ImmSetCompositionFontW(HIMC, LPLOGFONTW);
  231. #ifdef UNICODE
  232. #define ImmSetCompositionFont  ImmSetCompositionFontW
  233. #else
  234. #define ImmSetCompositionFont  ImmSetCompositionFontA
  235. #endif // !UNICODE
  236.  
  237. BOOL    WINAPI ImmConfigureIMEW(HKL, HWND, DWORD, LPVOID);
  238. #ifdef UNICODE
  239. #define ImmConfigureIME  ImmConfigureIMEW
  240. #else
  241. #define ImmConfigureIME  ImmConfigureIMEA
  242. #endif // !UNICODE
  243.  
  244. LRESULT WINAPI ImmEscapeW(HKL, HIMC, UINT, LPVOID);
  245. #ifdef UNICODE
  246. #define ImmEscape  ImmEscapeW
  247. #else
  248. #define ImmEscape  ImmEscapeA
  249. #endif // !UNICODE
  250.  
  251. DWORD   WINAPI ImmGetConversionListW(HKL, HIMC, LPCWSTR, LPCANDIDATELIST, DWORD dwBufLen, UINT uFlag);
  252. #ifdef UNICODE
  253. #define ImmGetConversionList  ImmGetConversionListW
  254. #else
  255. #define ImmGetConversionList  ImmGetConversionListA
  256. #endif // !UNICODE
  257.  
  258. BOOL    WINAPI ImmNotifyIME(HIMC, DWORD dwAction, DWORD dwIndex, DWORD dwValue);
  259.  
  260.  
  261. BOOL WINAPI ImmGetStatusWindowPos(HIMC, LPPOINT);
  262. BOOL WINAPI ImmSetStatusWindowPos(HIMC, LPPOINT);
  263. BOOL WINAPI ImmGetCompositionWindow(HIMC, LPCOMPOSITIONFORM);
  264. BOOL WINAPI ImmSetCompositionWindow(HIMC, LPCOMPOSITIONFORM);
  265. BOOL WINAPI ImmGetCandidateWindow(HIMC, DWORD, LPCANDIDATEFORM);
  266. BOOL WINAPI ImmSetCandidateWindow(HIMC, LPCANDIDATEFORM);
  267.  
  268. BOOL WINAPI ImmIsUIMessageW(HWND, UINT, WPARAM, LPARAM);
  269. #ifdef UNICODE
  270. #define ImmIsUIMessage  ImmIsUIMessageW
  271. #else
  272. #define ImmIsUIMessage  ImmIsUIMessageA
  273. #endif // !UNICODE
  274.  
  275. UINT WINAPI ImmGetVirtualKey(HWND);
  276.  
  277. typedef int (CALLBACK *REGISTERWORDENUMPROCA)(LPCSTR, DWORD, LPCSTR, LPVOID);
  278. typedef int (CALLBACK *REGISTERWORDENUMPROCW)(LPCWSTR, DWORD, LPCWSTR, LPVOID);
  279. #ifdef UNICODE
  280. #define REGISTERWORDENUMPROC  REGISTERWORDENUMPROCW
  281. #else
  282. #define REGISTERWORDENUMPROC  REGISTERWORDENUMPROCA
  283. #endif // !UNICODE
  284.  
  285. BOOL WINAPI ImmRegisterWordW(HKL, LPCWSTR lpszReading, DWORD, LPCWSTR lpszRegister);
  286. #ifdef UNICODE
  287. #define ImmRegisterWord  ImmRegisterWordW
  288. #else
  289. #define ImmRegisterWord  ImmRegisterWordA
  290. #endif // !UNICODE
  291.  
  292. BOOL WINAPI ImmUnregisterWordW(HKL, LPCWSTR lpszReading, DWORD, LPCWSTR lpszUnregister);
  293. #ifdef UNICODE
  294. #define ImmUnregisterWord  ImmUnregisterWordW
  295. #else
  296. #define ImmUnregisterWord  ImmUnregisterWordA
  297. #endif // !UNICODE
  298.  
  299. UINT WINAPI ImmGetRegisterWordStyleW(HKL, UINT nItem, LPSTYLEBUFW);
  300. #ifdef UNICODE
  301. #define ImmGetRegisterWordStyle  ImmGetRegisterWordStyleW
  302. #else
  303. #define ImmGetRegisterWordStyle  ImmGetRegisterWordStyleA
  304. #endif // !UNICODE
  305.  
  306. UINT WINAPI ImmEnumRegisterWordW(HKL, REGISTERWORDENUMPROCW, LPCWSTR lpszReading, DWORD, LPCWSTR lpszRegister, LPVOID);
  307. #ifdef UNICODE
  308. #define ImmEnumRegisterWord  ImmEnumRegisterWordW
  309. #else
  310. #define ImmEnumRegisterWord  ImmEnumRegisterWordA
  311. #endif // !UNICODE
  312.  
  313. BOOL WINAPI ImmDisableIME(DWORD);
  314. DWORD WINAPI ImmGetImeMenuItemsA(HIMC, DWORD, DWORD, LPIMEMENUITEMINFOA, LPIMEMENUITEMINFOA, DWORD);
  315. DWORD WINAPI ImmGetImeMenuItemsW(HIMC, DWORD, DWORD, LPIMEMENUITEMINFOW, LPIMEMENUITEMINFOW, DWORD);
  316. #ifdef UNICODE
  317. #define ImmGetImeMenuItems  ImmGetImeMenuItemsW
  318. #else
  319. #define ImmGetImeMenuItems  ImmGetImeMenuItemsA
  320. #endif // !UNICODE
  321.  
  322.  
  323.  
  324. // wParam for WM_IME_CONTROL
  325. #define IMC_GETCANDIDATEPOS             0x0007
  326. #define IMC_SETCANDIDATEPOS             0x0008
  327. #define IMC_GETCOMPOSITIONFONT          0x0009
  328. #define IMC_SETCOMPOSITIONFONT          0x000A
  329. #define IMC_GETCOMPOSITIONWINDOW        0x000B
  330. #define IMC_SETCOMPOSITIONWINDOW        0x000C
  331. #define IMC_GETSTATUSWINDOWPOS          0x000F
  332. #define IMC_SETSTATUSWINDOWPOS          0x0010
  333. #define IMC_CLOSESTATUSWINDOW           0x0021
  334. #define IMC_OPENSTATUSWINDOW            0x0022
  335.  
  336.  
  337.  
  338.  
  339.  
  340.  
  341.  
  342. // dwAction for ImmNotifyIME
  343. #define NI_OPENCANDIDATE                0x0010
  344. #define NI_CLOSECANDIDATE               0x0011
  345. #define NI_SELECTCANDIDATESTR           0x0012
  346. #define NI_CHANGECANDIDATELIST          0x0013
  347. #define NI_FINALIZECONVERSIONRESULT     0x0014
  348. #define NI_COMPOSITIONSTR               0x0015
  349. #define NI_SETCANDIDATE_PAGESTART       0x0016
  350. #define NI_SETCANDIDATE_PAGESIZE        0x0017
  351.  
  352.  
  353. // lParam for WM_IME_SETCONTEXT
  354. #define ISC_SHOWUICANDIDATEWINDOW       0x00000001
  355. #define ISC_SHOWUICOMPOSITIONWINDOW     0x80000000
  356. #define ISC_SHOWUIGUIDELINE             0x40000000
  357. #define ISC_SHOWUIALLCANDIDATEWINDOW    0x0000000F
  358. #define ISC_SHOWUIALL                   0xC000000F
  359.  
  360.  
  361. // dwIndex for ImmNotifyIME/NI_COMPOSITIONSTR
  362. #define CPS_COMPLETE                    0x0001
  363. #define CPS_CONVERT                     0x0002
  364. #define CPS_REVERT                      0x0003
  365. #define CPS_CANCEL                      0x0004
  366.  
  367.  
  368. // the modifiers of hot key
  369. #define MOD_ALT                         0x0001
  370. #define MOD_CONTROL                     0x0002
  371. #define MOD_SHIFT                       0x0004
  372.  
  373.  
  374. #define MOD_LEFT                        0x8000
  375. #define MOD_RIGHT                       0x4000
  376.  
  377. #define MOD_ON_KEYUP                    0x0800
  378. #define MOD_IGNORE_ALL_MODIFIER         0x0400
  379.  
  380.  
  381. // Windows for Simplified Chinese Edition hot key ID from 0x10 - 0x2F
  382. #define IME_CHOTKEY_FIRST                        0x10
  383. #define IME_CHOTKEY_IME_NONIME_TOGGLE           0x10
  384. #define IME_CHOTKEY_SHAPE_TOGGLE                0x11
  385. #define IME_CHOTKEY_SYMBOL_TOGGLE               0x12
  386. #define IME_CHOTKEY_LAST                        0x2f
  387.  
  388. // Windows for Japanese Edition hot key ID from 0x30 - 0x4F
  389. #define IME_JHOTKEY_FIRST                        0x30
  390. #define IME_JHOTKEY_CLOSE_OPEN                  0x30
  391. #define IME_JHOTKEY_LAST                        0x4f
  392.  
  393. // Windows for Korean Edition hot key ID from 0x50 - 0x6F
  394. #define IME_KHOTKEY_FIRST                        0x50
  395. #define IME_KHOTKEY_SHAPE_TOGGLE                0x50
  396. #define IME_KHOTKEY_HANJACONVERT                0x51
  397. #define IME_KHOTKEY_ENGLISH                     0x52
  398. #define IME_KHOTKEY_LAST                        0x6f
  399.  
  400. // Windows for Tranditional Chinese Edition hot key ID from 0x70 - 0x8F
  401. #define IME_THOTKEY_FIRST                        0x70
  402. #define IME_THOTKEY_IME_NONIME_TOGGLE           0x70
  403. #define IME_THOTKEY_SHAPE_TOGGLE                0x71
  404. #define IME_THOTKEY_SYMBOL_TOGGLE               0x72
  405. #define IME_THOTKEY_LAST                        0x8f
  406.  
  407. // direct switch hot key ID from 0x100 - 0x11F
  408. #define IME_HOTKEY_DSWITCH_FIRST                0x100
  409. #define IME_HOTKEY_DSWITCH_LAST                 0x11F
  410.  
  411. // IME private hot key from 0x200 - 0x21F
  412. #define IME_HOTKEY_PRIVATE_FIRST                0x200
  413. #define IME_ITHOTKEY_RESEND_RESULTSTR           0x200
  414. #define IME_ITHOTKEY_PREVIOUS_COMPOSITION       0x201
  415. #define IME_ITHOTKEY_UISTYLE_TOGGLE             0x202
  416. #define IME_HOTKEY_PRIVATE_LAST                 0x21F
  417.  
  418.  
  419. // dwSystemInfoFlags bits
  420.  
  421. // parameter of ImmGetCompositionString
  422. #define GCS_COMPREADSTR                 0x0001
  423. #define GCS_COMPREADATTR                0x0002
  424. #define GCS_COMPREADCLAUSE              0x0004
  425. #define GCS_COMPSTR                     0x0008
  426. #define GCS_COMPATTR                    0x0010
  427. #define GCS_COMPCLAUSE                  0x0020
  428. #define GCS_CURSORPOS                   0x0080
  429. #define GCS_DELTASTART                  0x0100
  430. #define GCS_RESULTREADSTR               0x0200
  431. #define GCS_RESULTREADCLAUSE            0x0400
  432. #define GCS_RESULTSTR                   0x0800
  433. #define GCS_RESULTCLAUSE                0x1000
  434.  
  435. // style bit flags for WM_IME_COMPOSITION
  436. #define CS_INSERTCHAR                   0x2000
  437. #define CS_NOMOVECARET                  0x4000
  438.  
  439.  
  440.  
  441. // bits of fdwInit of INPUTCONTEXT
  442. // IME version constants
  443. #define IMEVER_0310                     0x0003000A
  444. #define IMEVER_0400                     0x00040000
  445.  
  446.  
  447. // IME property bits
  448. #define IME_PROP_END_UNLOAD             0x00000001
  449. #define IME_PROP_KBD_CHAR_FIRST         0x00000002
  450. #define IME_PROP_IGNORE_UPKEYS          0x00000004
  451. #define IME_PROP_NEED_ALTKEY            0x00000008
  452. #define IME_PROP_NO_KEYS_ON_CLOSE       0x00000010
  453. #define IME_PROP_AT_CARET               0x00010000
  454. #define IME_PROP_SPECIAL_UI             0x00020000
  455. #define IME_PROP_CANDLIST_START_FROM_1  0x00040000
  456. #define IME_PROP_UNICODE                0x00080000
  457. #define IME_PROP_COMPLETE_ON_UNSELECT   0x00100000
  458. // all IME property bits, anyone add a new bit must update this !!!
  459. #define IME_PROP_ALL                    0x001F001F
  460.  
  461.  
  462. // IME UICapability bits
  463. #define UI_CAP_2700                     0x00000001
  464. #define UI_CAP_ROT90                    0x00000002
  465. #define UI_CAP_ROTANY                   0x00000004
  466.  
  467.  
  468. // ImmSetCompositionString Capability bits
  469. #define SCS_CAP_COMPSTR                 0x00000001
  470. #define SCS_CAP_MAKEREAD                0x00000002
  471. #define SCS_CAP_SETRECONVERTSTRING      0x00000004
  472.  
  473.  
  474. // IME WM_IME_SELECT inheritance Capability bits
  475. #define SELECT_CAP_CONVERSION           0x00000001
  476. #define SELECT_CAP_SENTENCE             0x00000002
  477.  
  478.  
  479. // ID for deIndex of ImmGetGuideLine
  480. #define GGL_LEVEL                       0x00000001
  481. #define GGL_INDEX                       0x00000002
  482. #define GGL_STRING                      0x00000003
  483. #define GGL_PRIVATE                     0x00000004
  484.  
  485.  
  486. // ID for dwLevel of GUIDELINE Structure
  487. #define GL_LEVEL_NOGUIDELINE            0x00000000
  488. #define GL_LEVEL_FATAL                  0x00000001
  489. #define GL_LEVEL_ERROR                  0x00000002
  490. #define GL_LEVEL_WARNING                0x00000003
  491. #define GL_LEVEL_INFORMATION            0x00000004
  492.  
  493.  
  494. // ID for dwIndex of GUIDELINE Structure
  495. #define GL_ID_UNKNOWN                   0x00000000
  496. #define GL_ID_NOMODULE                  0x00000001
  497. #define GL_ID_NODICTIONARY              0x00000010
  498. #define GL_ID_CANNOTSAVE                0x00000011
  499. #define GL_ID_NOCONVERT                 0x00000020
  500. #define GL_ID_TYPINGERROR               0x00000021
  501. #define GL_ID_TOOMANYSTROKE             0x00000022
  502. #define GL_ID_READINGCONFLICT           0x00000023
  503. #define GL_ID_INPUTREADING              0x00000024
  504. #define GL_ID_INPUTRADICAL              0x00000025
  505. #define GL_ID_INPUTCODE                 0x00000026
  506. #define GL_ID_INPUTSYMBOL               0x00000027
  507. #define GL_ID_CHOOSECANDIDATE           0x00000028
  508. #define GL_ID_REVERSECONVERSION         0x00000029
  509. #define GL_ID_PRIVATE_FIRST             0x00008000
  510. #define GL_ID_PRIVATE_LAST              0x0000FFFF
  511.  
  512.  
  513. // ID for dwIndex of ImmGetProperty
  514. #define IGP_GETIMEVERSION               (DWORD)(-4)
  515. #define IGP_PROPERTY                    0x00000004
  516. #define IGP_CONVERSION                  0x00000008
  517. #define IGP_SENTENCE                    0x0000000c
  518. #define IGP_UI                          0x00000010
  519. #define IGP_SETCOMPSTR                  0x00000014
  520. #define IGP_SELECT                      0x00000018
  521. #define IGP_PRIVATEDATASIZE                0x0000001c
  522. // last property index, anyone add a new property index must update this !!!
  523. #define IGP_LAST                        IGP_PRIVATEDATASIZE
  524.  
  525.  
  526. // dwIndex for ImmSetCompositionString API
  527. #define SCS_SETSTR                      (GCS_COMPREADSTR|GCS_COMPSTR)
  528. #define SCS_CHANGEATTR                  (GCS_COMPREADATTR|GCS_COMPATTR)
  529. #define SCS_CHANGECLAUSE                (GCS_COMPREADCLAUSE|GCS_COMPCLAUSE)
  530. #define SCS_SETRECONVERTSTRING          0x00010000
  531. #define SCS_QUERYRECONVERTSTRING        0x00020000
  532.  
  533.  
  534. // attribute for COMPOSITIONSTRING Structure
  535. #define ATTR_INPUT                      0x00
  536. #define ATTR_TARGET_CONVERTED           0x01
  537. #define ATTR_CONVERTED                  0x02
  538. #define ATTR_TARGET_NOTCONVERTED        0x03
  539. #define ATTR_INPUT_ERROR                0x04
  540.  
  541.  
  542. // bit field for IMC_SETCOMPOSITIONWINDOW, IMC_SETCANDIDATEWINDOW
  543. #define CFS_DEFAULT                     0x0000
  544. #define CFS_RECT                        0x0001
  545. #define CFS_POINT                       0x0002
  546. #define CFS_FORCE_POSITION              0x0020
  547. #define CFS_CANDIDATEPOS                0x0040
  548. #define CFS_EXCLUDE                     0x0080
  549.  
  550.  
  551. // conversion direction for ImmGetConversionList
  552. #define GCL_CONVERSION                  0x0001
  553. #define GCL_REVERSECONVERSION           0x0002
  554. #define GCL_REVERSE_LENGTH              0x0003
  555.  
  556.  
  557. // bit field for conversion mode
  558. #define IME_CMODE_ALPHANUMERIC          0x0000
  559. #define IME_CMODE_NATIVE                0x0001
  560. #define IME_CMODE_CHINESE               IME_CMODE_NATIVE
  561. // IME_CMODE_HANGEUL is old name of IME_CMODE_HANGUL. It will be gone eventually.
  562. #define IME_CMODE_HANGEUL               IME_CMODE_NATIVE
  563. #define IME_CMODE_HANGUL                IME_CMODE_NATIVE
  564. #define IME_CMODE_JAPANESE              IME_CMODE_NATIVE
  565. #define IME_CMODE_KATAKANA              0x0002  // only effect under IME_CMODE_NATIVE
  566. #define IME_CMODE_LANGUAGE              0x0003
  567. #define IME_CMODE_FULLSHAPE             0x0008
  568. #define IME_CMODE_ROMAN                 0x0010
  569. #define IME_CMODE_CHARCODE              0x0020
  570. #define IME_CMODE_HANJACONVERT          0x0040
  571. #define IME_CMODE_SOFTKBD               0x0080
  572. #define IME_CMODE_NOCONVERSION          0x0100
  573. #define IME_CMODE_EUDC                  0x0200
  574. #define IME_CMODE_SYMBOL                0x0400
  575. #define IME_CMODE_PASSWORD                0x80000000
  576.  
  577.  
  578. #define IME_SMODE_NONE                  0x0000
  579. #define IME_SMODE_PLAURALCLAUSE         0x0001
  580. #define IME_SMODE_SINGLECONVERT         0x0002
  581. #define IME_SMODE_AUTOMATIC             0x0004
  582. #define IME_SMODE_PHRASEPREDICT         0x0008
  583.  
  584.  
  585. // style of candidate
  586. #define IME_CAND_UNKNOWN                0x0000
  587. #define IME_CAND_READ                   0x0001
  588. #define IME_CAND_CODE                   0x0002
  589. #define IME_CAND_MEANING                0x0003
  590. #define IME_CAND_RADICAL                0x0004
  591. #define IME_CAND_STROKE                 0x0005
  592.  
  593.  
  594. // wParam of report message WM_IME_NOTIFY
  595. #define IMN_CLOSESTATUSWINDOW           0x0001
  596. #define IMN_OPENSTATUSWINDOW            0x0002
  597. #define IMN_CHANGECANDIDATE             0x0003
  598. #define IMN_CLOSECANDIDATE              0x0004
  599. #define IMN_OPENCANDIDATE               0x0005
  600. #define IMN_SETCONVERSIONMODE           0x0006
  601. #define IMN_SETSENTENCEMODE             0x0007
  602. #define IMN_SETOPENSTATUS               0x0008
  603. #define IMN_SETCANDIDATEPOS             0x0009
  604. #define IMN_SETCOMPOSITIONFONT          0x000A
  605. #define IMN_SETCOMPOSITIONWINDOW        0x000B
  606. #define IMN_SETSTATUSWINDOWPOS          0x000C
  607. #define IMN_GUIDELINE                   0x000D
  608. #define IMN_PRIVATE                     0x000E
  609.  
  610.  
  611. // error code of ImmGetCompositionString
  612. #define IMM_ERROR_NODATA                (-1)
  613. #define IMM_ERROR_GENERAL               (-2)
  614.  
  615.  
  616. // dialog mode of ImmConfigureIME
  617. #define IME_CONFIG_GENERAL              1
  618. #define IME_CONFIG_REGISTERWORD         2
  619. #define IME_CONFIG_SELECTDICTIONARY     3
  620.  
  621.  
  622. // dialog mode of ImmEscape
  623. #define IME_ESC_QUERY_SUPPORT           0x0003
  624. #define IME_ESC_RESERVED_FIRST          0x0004
  625. #define IME_ESC_RESERVED_LAST           0x07FF
  626. #define IME_ESC_PRIVATE_FIRST           0x0800
  627. #define IME_ESC_PRIVATE_LAST            0x0FFF
  628. #define IME_ESC_SEQUENCE_TO_INTERNAL    0x1001
  629. #define IME_ESC_GET_EUDC_DICTIONARY     0x1003
  630. #define IME_ESC_SET_EUDC_DICTIONARY     0x1004
  631. #define IME_ESC_MAX_KEY                 0x1005
  632. #define IME_ESC_IME_NAME                0x1006
  633. #define IME_ESC_SYNC_HOTKEY             0x1007
  634. #define IME_ESC_HANJA_MODE              0x1008
  635. #define IME_ESC_AUTOMATA                0x1009
  636. #define IME_ESC_PRIVATE_HOTKEY          0x100a
  637.  
  638.  
  639. // style of word registration
  640. #define IME_REGWORD_STYLE_EUDC          0x00000001
  641. #define IME_REGWORD_STYLE_USER_FIRST    0x80000000
  642. #define IME_REGWORD_STYLE_USER_LAST     0xFFFFFFFF
  643.  
  644. // dwFlags for ImmAssociateContextEx
  645. #define IACE_CHILDREN                   0x0001
  646. #define IACE_DEFAULT                    0x0010
  647. #define IACE_IGNORENOCONTEXT            0x0020
  648.  
  649. // dwFlags for ImmGetImeMenuItems
  650. #define IGIMIF_RIGHTMENU                0x0001
  651.  
  652. // dwType for ImmGetImeMenuItems
  653. #define IGIMII_CMODE                    0x0001
  654. #define IGIMII_SMODE                    0x0002
  655. #define IGIMII_CONFIGURE                0x0004
  656. #define IGIMII_TOOLS                    0x0008
  657. #define IGIMII_HELP                     0x0010
  658. #define IGIMII_OTHER                    0x0020
  659. #define IGIMII_INPUTTOOLS               0x0040
  660.  
  661. // fType of IMEMENUITEMINFO structure
  662. #define IMFT_RADIOCHECK 0x00001
  663. #define IMFT_SEPARATOR  0x00002
  664. #define IMFT_SUBMENU    0x00004
  665.  
  666. // fState of IMEMENUITEMINFO structure
  667. #define IMFS_GRAYED          MF_GRAYED
  668. #define IMFS_DISABLED        MFS_DISABLED
  669. #define IMFS_CHECKED         MFS_CHECKED
  670. #define IMFS_HILITE          MFS_HILITE
  671. #define IMFS_ENABLED         MFS_ENABLED
  672. #define IMFS_UNCHECKED       MFS_UNCHECKED
  673. #define IMFS_UNHILITE        MFS_UNHILITE
  674. #define IMFS_DEFAULT         MFS_DEFAULT
  675.  
  676.  
  677.  
  678. // type of soft keyboard
  679. // for Windows Tranditional Chinese Edition
  680. #define SOFTKEYBOARD_TYPE_T1            0x0001
  681. // for Windows Simplified Chinese Edition
  682. #define SOFTKEYBOARD_TYPE_C1            0x0002
  683.  
  684.  
  685.  
  686.  
  687. //    Windows CE immp.h merged into imm.h
  688.  
  689.  
  690. typedef struct tagCOMPOSITIONSTRING {
  691.     DWORD dwSize;
  692.     DWORD dwCompReadAttrLen;
  693.     DWORD dwCompReadAttrOffset;
  694.     DWORD dwCompReadClauseLen;
  695.     DWORD dwCompReadClauseOffset;
  696.     DWORD dwCompReadStrLen;
  697.     DWORD dwCompReadStrOffset;
  698.     DWORD dwCompAttrLen;
  699.     DWORD dwCompAttrOffset;
  700.     DWORD dwCompClauseLen;
  701.     DWORD dwCompClauseOffset;
  702.     DWORD dwCompStrLen;
  703.     DWORD dwCompStrOffset;
  704.     DWORD dwCursorPos;
  705.     DWORD dwDeltaStart;
  706.     DWORD dwResultReadClauseLen;
  707.     DWORD dwResultReadClauseOffset;
  708.     DWORD dwResultReadStrLen;
  709.     DWORD dwResultReadStrOffset;
  710.     DWORD dwResultClauseLen;
  711.     DWORD dwResultClauseOffset;
  712.     DWORD dwResultStrLen;
  713.     DWORD dwResultStrOffset;
  714.     DWORD dwPrivateSize;
  715.     DWORD dwPrivateOffset;
  716. } COMPOSITIONSTRING, *PCOMPOSITIONSTRING, NEAR *NPCOMPOSITIONSTRING, FAR  *LPCOMPOSITIONSTRING;
  717.  
  718.  
  719. typedef struct tagGUIDELINE {
  720.     DWORD dwSize;
  721.     DWORD dwLevel;
  722.     DWORD dwIndex;
  723.     DWORD dwStrLen;
  724.     DWORD dwStrOffset;
  725.     DWORD dwPrivateSize;
  726.     DWORD dwPrivateOffset;
  727. } GUIDELINE, *PGUIDELINE, NEAR *NPGUIDELINE, FAR *LPGUIDELINE;
  728.  
  729. typedef struct tagRECONVERTSTRING {
  730.     DWORD dwSize;
  731.     DWORD dwVersion;
  732.     DWORD dwStrLen;
  733.     DWORD dwStrOffset;
  734.     DWORD dwCompStrLen;
  735.     DWORD dwCompStrOffset;
  736.     DWORD dwTargetStrLen;
  737.     DWORD dwTargetStrOffset;
  738. } RECONVERTSTRING, *PRECONVERTSTRING, NEAR *NPRECONVERTSTRING, FAR *LPRECONVERTSTRING;
  739.  
  740. typedef struct tagCANDIDATEINFO {
  741.     DWORD               dwSize;
  742.     DWORD               dwCount;
  743.     DWORD               dwOffset[32];
  744.     DWORD               dwPrivateSize;
  745.     DWORD               dwPrivateOffset;
  746. } CANDIDATEINFO, *PCANDIDATEINFO, NEAR *NPCANDIDATEINFO, FAR *LPCANDIDATEINFO;
  747.  
  748.  
  749. typedef struct tagINPUTCONTEXT {
  750.     HWND                hWnd;
  751.     BOOL                fOpen;
  752.     DWORD                fdwClient;        //    Windows CE addition.
  753.     HWND                hwndImeInUse;    //    Windows CE addition.
  754.     POINT               ptStatusWndPos;
  755.     POINT               ptSoftKbdPos;
  756.     DWORD               fdwConversion;
  757.     DWORD               fdwSentence;
  758.     union   {
  759.         LOGFONTA        A;
  760.         LOGFONTW        W;
  761.     } lfFont;
  762.     COMPOSITIONFORM     cfCompForm;
  763.     CANDIDATEFORM       cfCandForm[4];
  764.     HIMCC               hCompStr;
  765.     HIMCC               hCandInfo;
  766.     HIMCC               hGuideLine;
  767.     HIMCC               hPrivate;
  768.     DWORD               dwNumMsgBuf;
  769.     HIMCC               hMsgBuf;
  770.     DWORD               fdwInit;
  771.     DWORD               dwReserve[3];
  772.     UINT                uSavedVKey;
  773.     BOOL                fChgMsg;
  774.     DWORD               fdwFlags;
  775.     DWORD               fdw31Compat;
  776.     DWORD               dwRefCount;
  777.  
  778. } INPUTCONTEXT, *PINPUTCONTEXT, NEAR *NPINPUTCONTEXT, FAR *LPINPUTCONTEXT;
  779.  
  780.  
  781. typedef struct tagIMEINFO {
  782.     DWORD       dwPrivateDataSize;
  783.     DWORD       fdwProperty;
  784.     DWORD       fdwConversionCaps;
  785.     DWORD       fdwSentenceCaps;
  786.     DWORD       fdwUICaps;
  787.     DWORD       fdwSCSCaps;
  788.     DWORD       fdwSelectCaps;
  789. } IMEINFO, *PIMEINFO, NEAR *NPIMEINFO, FAR *LPIMEINFO;
  790.  
  791.  
  792. typedef struct tagSOFTKBDDATA {
  793.     UINT        uCount;
  794.     WORD        wCode[1][256];
  795. } SOFTKBDDATA, *PSOFTKBDDATA, NEAR *NPSOFTKBDDATA, FAR * LPSOFTKBDDATA;
  796.  
  797.  
  798. BOOL WINAPI ImmGetHotKey(DWORD, LPUINT lpuModifiers, LPUINT lpuVKey, LPHKL);
  799. BOOL WINAPI ImmSetHotKey(DWORD, UINT, UINT, HKL);
  800. BOOL WINAPI ImmGenerateMessage(HIMC);
  801.  
  802. LRESULT WINAPI ImmRequestMessageA(HIMC, WPARAM, LPARAM);
  803. LRESULT WINAPI ImmRequestMessageW(HIMC, WPARAM, LPARAM);
  804. #ifdef UNICODE
  805. #define ImmRequestMessage  ImmRequestMessageW
  806. #else
  807. #define ImmRequestMessage  ImmRequestMessageA
  808. #endif // !UNICODE
  809. //
  810. // Prototype of soft keyboard APIs
  811. //
  812.  
  813. HWND WINAPI ImmCreateSoftKeyboard(UINT, HWND, int, int);
  814. BOOL WINAPI ImmDestroySoftKeyboard(HWND);
  815. BOOL WINAPI ImmShowSoftKeyboard(HWND, int);
  816.  
  817.  
  818. LPINPUTCONTEXT WINAPI ImmLockIMC(HIMC);
  819. BOOL  WINAPI ImmUnlockIMC(HIMC);
  820. DWORD WINAPI ImmGetIMCLockCount(HIMC);
  821.  
  822. HIMCC  WINAPI ImmCreateIMCC(DWORD);
  823. HIMCC  WINAPI ImmDestroyIMCC(HIMCC);
  824. LPVOID WINAPI ImmLockIMCC(HIMCC);
  825. BOOL   WINAPI ImmUnlockIMCC(HIMCC);
  826. DWORD  WINAPI ImmGetIMCCLockCount(HIMCC);
  827. HIMCC  WINAPI ImmReSizeIMCC(HIMCC, DWORD);
  828. DWORD  WINAPI ImmGetIMCCSize(HIMCC);
  829.  
  830.  
  831. // the window extra offset
  832. #define IMMGWL_IMC                      0
  833. #define IMMGWL_PRIVATE                  (sizeof(LONG))
  834.  
  835.  
  836. // 0x11 - 0x20 is reserved for soft keyboard
  837. // wParam for WM_IME_SYSTEM
  838. #define IMS_DESTROYWINDOW               0x0001
  839. #define IMS_IME31COMPATIBLE             0x0002
  840. #define IMS_SETOPENSTATUS               0x0003
  841. #define IMS_SETACTIVECONTEXT            0x0004
  842. #define IMS_CHANGE_SHOWSTAT             0x0005
  843. #define IMS_WINDOWPOS                   0x0006
  844.  
  845. #define IMS_SENDIMEMSG                  0x0007
  846. #define IMS_SENDIMEMSGEX                0x0008
  847. #define IMS_SETCANDIDATEPOS             0x0009
  848. #define IMS_SETCOMPOSITIONFONT          0x000A
  849. #define IMS_SETCOMPOSITIONWINDOW        0x000B
  850. #define IMS_CHECKENABLE                 0x000C
  851. #define IMS_CONFIGUREIME                0x000D
  852. #define IMS_CONTROLIMEMSG               0x000E
  853. #define IMS_SETOPENCLOSE                0x000F
  854. #define IMS_ISACTIVATED                 0x0010
  855. #define IMS_UNLOADTHREADLAYOUT          0x0011
  856. #define IMS_LCHGREQUEST                 0x0012
  857. #define IMS_SETSOFTKBDONOFF             0x0013
  858. #define IMS_GETCONVERSIONMODE           0x0014
  859. #define IMS_IMEHELP                     0x0015
  860.  
  861. #define IMS_IMENT35SENDAPPMSG           0x0016
  862. #define IMS_ACTIVATECONTEXT             0x0017
  863. #define IMS_DEACTIVATECONTEXT           0x0018
  864. #define IMS_ACTIVATETHREADLAYOUT        0x0019
  865. #define IMS_CLOSEPROPERTYWINDOW         0x001a
  866. #define IMS_OPENPROPERTYWINDOW          0x001b
  867.  
  868. #define IMS_GETIMEMENU                  0x001c
  869. #define IMS_ENDIMEMENU                  0x001d
  870. #define IMS_SETCONVERSIONSTATUS            0x001e
  871.  
  872. // for NI_CONTEXTUPDATED
  873. #define IMC_GETCONVERSIONMODE           0x0001
  874. #define IMC_SETCONVERSIONMODE           0x0002
  875. #define IMC_GETSENTENCEMODE             0x0003
  876. #define IMC_SETSENTENCEMODE             0x0004
  877. #define IMC_GETOPENSTATUS               0x0005
  878. #define IMC_SETOPENSTATUS               0x0006
  879. // wParam for WM_IME_CONTROL to the soft keyboard
  880. #define IMC_GETSOFTKBDFONT              0x0011
  881. #define IMC_SETSOFTKBDFONT              0x0012
  882. #define IMC_GETSOFTKBDPOS               0x0013
  883. #define IMC_SETSOFTKBDPOS               0x0014
  884. #define IMC_GETSOFTKBDSUBTYPE           0x0015
  885. #define IMC_SETSOFTKBDSUBTYPE           0x0016
  886. #define IMC_SETSOFTKBDDATA              0x0018
  887.  
  888.  
  889. #define NI_CONTEXTUPDATED               0x0003
  890. // the return bits of ImmProcessHotKey
  891. #define IPHK_HOTKEY                     0x0001
  892. #define IPHK_PROCESSBYIME               0x0002
  893. #define IPHK_CHECKCTRL                  0x0004
  894. // NT only
  895. #define IPHK_SKIPTHISKEY                0x0010
  896.  
  897.  
  898. #define MOD_WIN                         0x0008
  899. #define IME_INVALID_HOTKEY                      0xffffffff
  900. #define IME_SYSINFO_WINLOGON            0x0001
  901. #define IME_SYSINFO_WOW16               0x0002
  902. #define GCS_COMP                        (GCS_COMPSTR|GCS_COMPATTR|GCS_COMPCLAUSE)
  903. #define GCS_COMPREAD                    (GCS_COMPREADSTR|GCS_COMPREADATTR |GCS_COMPREADCLAUSE)
  904. #define GCS_RESULT                      (GCS_RESULTSTR|GCS_RESULTCLAUSE)
  905. #define GCS_RESULTREAD                  (GCS_RESULTREADSTR|GCS_RESULTREADCLAUSE)
  906. #define INIT_STATUSWNDPOS               0x00000001
  907. #define INIT_CONVERSION                 0x00000002
  908. #define INIT_SENTENCE                   0x00000004
  909. #define INIT_LOGFONT                    0x00000008
  910. #define INIT_COMPFORM                   0x00000010
  911. #define INIT_SOFTKBDPOS                 0x00000020
  912.  
  913.  
  914. // fdw31Compat of INPUTCONTEXT
  915. #define F31COMPAT_NOKEYTOIME     0x00000001
  916. #define F31COMPAT_MCWHIDDEN      0x00000002
  917. #define F31COMPAT_MCWVERTICAL    0x00000004
  918. #define F31COMPAT_CALLFROMWINNLS 0x00000008
  919. #define F31COMPAT_SAVECTRL       0x00010000
  920. #define F31COMPAT_PROCESSEVENT   0x00020000
  921. #define F31COMPAT_ECSETCFS       0x00040000
  922.  
  923.  
  924. // the return value of ImmGetAppIMECompatFlags
  925. #define IMECOMPAT_UNSYNC31IMEMSG 0x00000001
  926. // the meaning of this bit depend on the same bit in
  927. // IMELinkHdr.ctCountry.fdFlags
  928. #define IMECOMPAT_DUMMYTASK      0x00000002
  929. // For Japanese and Hangeul versions, this bit on
  930. // indicates no dummy task is needed
  931. #define IMECOMPAT_NODUMMYTASK    IMECOMPAT_DUMMYTASK
  932. // For Chinese and PRC versions, this bit on indicates
  933. // a dummy tasked is needed
  934. #define IMECOMPAT_NEEDDUMMYTASK  IMECOMPAT_DUMMYTASK
  935. #define IMECOMPAT_POSTDUMMY      0x00000004
  936. #define IMECOMPAT_ECNOFLUSH      0x00000008
  937. #define IMECOMPAT_NOINPUTLANGCHGTODLG   0x00000010
  938. #define IMECOMPAT_ECREDRAWPARENT        0x00000020
  939. #define IMECOMPAT_SENDOLDSBM            0x00000040
  940. #define IMECOMPAT_UNSYNC31IMEMSG2       0x00000080
  941. #define IMECOMPAT_NOIMEMSGINTERTASK     0x00000100
  942. #define IMECOMPAT_USEXWANSUNG           0x00000200
  943. #define IMECOMPAT_JXWFORATOK            0x00000400
  944. #define IMECOMPAT_NOIME                 0x00000800
  945. #define IMECOMPAT_NOKBDHOOK             0x00001000
  946. #define IMECOMPAT_APPWNDREMOVEIMEMSGS   0x00002000
  947. #define IMECOMPAT_LSTRCMP31COMPATIBLE   0x00004000
  948. #define IMECOMPAT_USEALTSTKFORSHLEXEC   0x00008000
  949. #define IMECOMPAT_NOVKPROCESSKEY        0x00010000
  950. #define IMECOMPAT_NOYIELDWMCHAR         0x00020000
  951. #define IMECOMPAT_SENDSC_RESTORE        0x00040000
  952. #define IMECOMPAT_NOSENDLANGCHG         0x00080000
  953. #define IMECOMPAT_FORCEUNSYNC31IMEMSG   0x00100000
  954. #define IMECOMPAT_CONSOLEIMEPROCESS     0x00200000
  955.  
  956. #define IMGTF_CANT_SWITCH_LAYOUT        0x00000001
  957. #define IMGTF_CANT_UNLOAD_IME           0x00000002
  958.  
  959. #define UI_CAP_SOFTKBD                  0x00010000
  960. // all IME UICapability bits, anyone add a new bit must update this !!!
  961. #define UI_CAP_ALL                      0x00010007
  962. // all ImmSetCompositionString Capability bits !!!
  963. #define SCS_CAP_ALL                     0x00000007
  964. // all IME WM_IME_SELECT inheritance Capability bits !!!
  965. #define SELECT_CAP_ALL                  0x00000003
  966. #define CFS_SCREEN                      0x0004
  967. #define CFS_VERTICAL                    0x0008
  968. #define CFS_HIDDEN                      0x0010
  969. // all conversion mode bits, anyone add a new bit must update this !!!
  970. #define IME_CMODE_ALL                   0x0FFF
  971. // all sentence mode bits, anyone add a new bit must update this !!!
  972. #define IME_SMODE_ALL                   0x001F
  973. #define IMN_SOFTKBDDESTROYED            0x0011
  974.  
  975.  
  976.  
  977. // protype of IME APIs
  978. BOOL    WINAPI ImeInquire(LPIMEINFO, LPWSTR lpszUIClass, DWORD dwSystemInfoFlags);
  979. BOOL    WINAPI ImeConfigure(HKL, HWND, DWORD, LPVOID);
  980. DWORD   WINAPI ImeConversionListW(HIMC, LPCWSTR, LPCANDIDATELIST, DWORD dwBufLen, UINT uFlag);
  981. BOOL    WINAPI ImeDestroy(UINT);
  982. LRESULT WINAPI ImeEscape(HIMC, UINT, LPVOID);
  983. BOOL    WINAPI ImeProcessKey(HIMC, UINT, LPARAM, CONST LPBYTE);
  984. BOOL    WINAPI ImeSelect(HIMC, BOOL);
  985. BOOL    WINAPI ImeSetActiveContext(HIMC, BOOL);
  986. UINT    WINAPI ImeToAsciiEx(UINT uVirtKey, UINT uScaCode, CONST LPBYTE lpbKeyState, LPDWORD lpdwTransBuf, UINT fuState, HIMC);
  987. BOOL    WINAPI NotifyIME(HIMC, DWORD, DWORD, DWORD);
  988. BOOL    WINAPI ImeRegisterWord(LPCWSTR, DWORD, LPCWSTR);
  989. BOOL    WINAPI ImeUnregisterWord(LPCWSTR, DWORD, LPCWSTR);
  990. UINT    WINAPI ImeGetRegisterWordStyle(UINT nItem, LPSTYLEBUF);
  991. UINT    WINAPI ImeEnumRegisterWord(REGISTERWORDENUMPROC, LPCWSTR, DWORD, LPCWSTR, LPVOID);
  992. BOOL    WINAPI ImeSetCompositionString(HIMC, DWORD dwIndex, LPCVOID lpComp, DWORD, LPCVOID lpRead, DWORD);
  993. DWORD    WINAPI ImeGetImeMenuItems(HIMC hIMC, DWORD dwFlags, DWORD dwType, LPIMEMENUITEMINFO lpParentMenu, LPIMEMENUITEMINFO lpMenu, DWORD dwSize);
  994.  
  995.  
  996.  
  997.  
  998.  
  999. //    Windows CE additions
  1000.  
  1001.  
  1002. BOOL WINAPI ImmIsValidIMC (
  1003.     HIMC hIMC
  1004.     );
  1005.  
  1006. //*****************************************
  1007. // Messages From Parent window
  1008. //  wParam : 0
  1009. //  lParam : appropriate value for Message
  1010. //*****************************************
  1011.  
  1012. #define CLM_START       0x00001000
  1013.  
  1014. #define CLM_SETCANDLIST    (CLM_START + 0) // lParam : LPCANDIDATELIST
  1015. #define CLM_SETWNDPOS      (CLM_START + 1) // lParam : MAKELONG(POINT)
  1016. #define CLM_GETCURSEL      (CLM_START + 2) // lParam : 0 ; return : current selection
  1017. #define CLM_GETPAGESTART   (CLM_START + 3) // lParam : 0 ; return : current page start
  1018.  
  1019. // Internal for CANDLIST window
  1020. //*****************************************
  1021. // Special window styles for candidate list
  1022. //*****************************************
  1023. #define CLS_BUTTONS     0x00000001
  1024. #define CLS_FRACTION 0x00000002
  1025. #define CLS_ACTIVATE 0x00000004
  1026. #define WS_NOTIFY    0x00000008
  1027.  
  1028.  
  1029. //*****************************************
  1030. // Notification from Candidate list window
  1031. //  wParam for WM_CAND_NOTIFY message
  1032. //*****************************************
  1033.  
  1034. #define CLN_NOTIFYCODE  0x0100
  1035. #define CLN_DETERMINE   (CLN_NOTIFYCODE + 0)
  1036. #define CLN_SELECTION   (CLN_NOTIFYCODE + 1)
  1037. #define CLN_PAGESTART   (CLN_NOTIFYCODE + 2)
  1038.  
  1039.  
  1040. //*****************************************
  1041. // Structure for Globaled candidate proc
  1042. //*****************************************
  1043. typedef struct _MYCANDLIST {
  1044.     HWND             ParentWnd;  // Parent window handle.
  1045.     LPCANDIDATELIST  CandList;   // Candidate list structure.
  1046. } MYCANDLIST;
  1047.  
  1048.  
  1049. /*
  1050.  * Handwriting pad specific structures
  1051.  */
  1052. typedef struct _tagHWXRESULT
  1053. {
  1054.    WORD     cbCount;          // Number of candidates in the list
  1055.    WORD     iSelection;      // Current selection
  1056.    WORD     iPosition;       // cursor position
  1057.    TCHAR    chCandidate[1];   // The array of candidates
  1058. } HWXRESULT, *PHWXRESULT;
  1059.  
  1060. // Internal window style
  1061. #define ES_COMPWND                  0x4000L
  1062.  
  1063. // Internal defines and API
  1064. #define WM_IME_CONTROL_EDIT         0x1000L
  1065. #define IMC_EDIT_CONVERT            0x0001L
  1066. #define IMC_EDIT_DETERMINE          0x0002L
  1067. #define IMC_EDIT_CANCELCONVERT      0x0003L
  1068. #define IMC_EDIT_GETSTATUS          0x0004L
  1069. #define IMC_EDIT_UNDO               0x0005L
  1070. #define IMC_EDIT_CANUNDO            0x0006L
  1071. #define IMC_EDIT_EMPTYUNDOBUFFER    0x0007L
  1072. #define IMC_EDIT_REPLACESEL         0x0008L
  1073. #define IMC_EDIT_CLEARALL           0x0009L
  1074. #define IMC_EDIT_SETIMC             0x000AL
  1075. #define IMC_EDIT_GETCANDIDATEPOS    0x000BL
  1076. #define IMC_EDIT_UPDATEPROP         0x000CL
  1077. #define IMC_EDIT_HALFWIDTH          0x000DL
  1078. #define IMC_EDIT_UPDATECLIST        0x000EL
  1079.  
  1080. // Edit control is in input mode, no IME is involved
  1081. #define IMCR_INPUT                  0x0001
  1082. // Edit control is in conversion mode.
  1083. #define IMCR_CONVERT                0x0002
  1084. // Edit control is in conversion mode, the current clauses is un-converted
  1085. // and the cursor is within current clause
  1086. #define IMCR_UNCONVERT              0x0003
  1087. // Edit control is in composition mode, but not in conversion mode.
  1088. #define IMCR_COMPOSITION            0x0004
  1089.  
  1090. // For set cursor posision on composition string ( Internal )
  1091. #define IME_ESC_SETCURSOR               0x100A
  1092.  
  1093.  
  1094. #define SIP_QUERY_STATE             0x2000
  1095. #define SIP_SET_STATE               0x2001
  1096. #define SIP_STATE_HDKB              0x0001
  1097. #define SIP_STATE_NOHDKB            0x0002
  1098.  
  1099. #define SIP_QUERY_RCMASK            0x3000
  1100. #define SIP_SET_RCMASK              0x3001
  1101.  
  1102. #define SIP_SET_OPENCANDWND            0x5000
  1103. #define SIP_SET_CLOSECANDWND        0x5001
  1104.  
  1105. #define SIP_QUERY_HALFWIDTH            0x6000
  1106. #define SIP_SET_HALFWIDTH            0x6001
  1107. #define SIP_WIDTHSETTING_HALF       0x01                
  1108.  
  1109. #define SIP_QUERY_MODE                0x8000
  1110. #define SIP_SET_MODE                0x8001
  1111. #define    SIP_MODE_MINIMAL            0x0000
  1112. #define    SIP_MODE_REDUCED            0x0001
  1113. #define    SIP_MODE_FULL                0x0002
  1114. #define    SIP_MODE_FULL_HIDDEN        0x0003
  1115.  
  1116. #define SIP_NOTIFY_FOCUS_CHANGE     0xFFFB
  1117. #define SIP_RELEASE_STICKY_KEYS     0xFFFC
  1118. #define SIP_CONFIG_CHANGED          0xFFFD
  1119. #define SIP_SHOW_WARNING            0xFFFE
  1120. #define SIP_KILL_MENU                0xFFFF
  1121.  
  1122.  
  1123.  
  1124.  
  1125. // wIndex value of ImmSIPanelState
  1126. #define SIP_QUERY_LOCATION          0x1000
  1127. #define SIP_SET_LOCATION            0x1001
  1128. #define SIP_INPUT_ATTRIBUTES        0x7000
  1129. #define SIP_INPUT_NUMERIC             0x00000004L
  1130. #define SIP_INPUT_ALPHANUMERIC        0x00000008L
  1131. #define SIP_INPUT_HIRAGANA            0x00000010L
  1132. #define SIP_INPUT_KATAKANA            0x00000100L
  1133. #define SIP_INPUT_EVERYTHING        0x00000000L
  1134. #define SIP_INPUT_PASSWORD          0x00000020L
  1135. #define SIP_INPUT_HALFWIDTH            0x00000001L
  1136. #define SIP_INPUT_FULLWIDTH            0x00000002L
  1137. BOOL WINAPI ImmSIPanelState(
  1138.     UINT    dwCmd,
  1139.     LPVOID  pValue
  1140.     );
  1141.  
  1142.  
  1143. // wParam of report message WM_IME_REQUEST
  1144. #define IMR_COMPOSITIONWINDOW           0x0001
  1145. #define IMR_CANDIDATEWINDOW             0x0002
  1146. #define IMR_COMPOSITIONFONT             0x0003
  1147. #define IMR_RECONVERTSTRING             0x0004
  1148. #define IMR_CONFIRMRECONVERTSTRING      0x0005
  1149. #define IMR_QUERYCHARPOSITION           0x0006
  1150. #define IMR_DOCUMENTFEED                0x0007
  1151.  
  1152.  
  1153. #ifdef __cplusplus
  1154. }
  1155. #endif
  1156.  
  1157.  
  1158. #ifdef WINCEOEM
  1159. #include <pimm.h>    // internal defines
  1160. #ifdef WINCEMACRO
  1161. #include <mimm.h>
  1162. #endif
  1163. #endif
  1164.  
  1165.  
  1166.  
  1167.  
  1168. #endif  // _IMM_
  1169.