Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

599 lines
22 KiB

  1. /*************************************************
  2. * imedefs.h *
  3. * *
  4. * Copyright (C) 1995-1999 Microsoft Inc. *
  5. * *
  6. *************************************************/
  7. #define STRSAFE_NO_DEPRECATE
  8. #include "strsafe.h"
  9. #ifndef ARRAYSIZE
  10. #define ARRAYSIZE(a) (sizeof(a)/sizeof(a[0]))
  11. #endif
  12. #define NATIVE_CHARSET GB2312_CHARSET
  13. #define NATIVE_ANSI_CP 936
  14. #define NATIVE_LANGUAGE 0x0804
  15. // resource ID
  16. #define IDI_IME 0x0100
  17. #define IDS_STATUSERR 0x0200
  18. #define IDS_CHICHAR 0x0201
  19. #define IDS_EUDC 0x0202
  20. #if defined(CROSSREF)
  21. #define IDS_NONE 0x0204
  22. #endif //CROSSREF
  23. #define IDS_USRDIC_FILTER 0x0210
  24. #define IDS_FILE_OPEN_ERR 0x0220
  25. #define IDS_MEM_LESS_ERR 0x0221
  26. #define IDS_SETFILE 0x0300
  27. #define IDS_IMENAME 0x0320
  28. #define IDS_IMEUICLASS 0x0321
  29. #define IDS_IMECOMPCLASS 0x0322
  30. #define IDS_IMECANDCLASS 0x0323
  31. #define IDS_IMESTATUSCLASS 0x0324
  32. #define IDS_IMECMENUCLASS 0x0325
  33. #define IDS_IMESOFTKEYMENUCLASS 0x0326
  34. #define IDS_IMEREGNAME 0x0327
  35. #define IDS_IMENAME_QW 0x0328
  36. #define IDS_IMENAME_NM 0x0329
  37. #define IDS_IMENAME_UNI 0x0330
  38. #define IDS_WARN_OPENREG 0x0602
  39. #define IDC_STATIC -1
  40. #define IDM_HLP 0x0400
  41. #define IDM_OPTGUD 0x0403
  42. #define IDM_IMEGUD 0x0405
  43. #define IDM_VER 0x0401
  44. #define IDM_PROP 0x0402
  45. #define IDM_IME 0x0450
  46. #define IDM_SKL1 0x0500
  47. #define IDM_SKL2 0x0501
  48. #define IDM_SKL3 0x0502
  49. #define IDM_SKL4 0x0503
  50. #define IDM_SKL5 0x0504
  51. #define IDM_SKL6 0x0505
  52. #define IDM_SKL7 0x0506
  53. #define IDM_SKL8 0x0507
  54. #define IDM_SKL9 0x0508
  55. #define IDM_SKL10 0x0509
  56. #define IDM_SKL11 0x050a
  57. #define IDM_SKL12 0x050b
  58. #define IDM_SKL13 0x050c
  59. #define DlgPROP 101
  60. #define DlgUIMODE 102
  61. #define IDC_UIMODE1 1001
  62. #define IDC_UIMODE2 1002
  63. #define IDC_USER1 1003
  64. // setting offset in .SET file
  65. #define OFFSET_MODE_CONFIG 0
  66. #define OFFSET_READLAYOUT 4
  67. // state of composition
  68. #define CST_INIT 0
  69. #define CST_INPUT 1
  70. #define CST_CHOOSE 2
  71. #define CST_SYMBOL 3
  72. #define CST_SOFTKB 4 // not in iImeState
  73. #define CST_TOGGLE_PHRASEWORD 5 // not in iImeState
  74. #define CST_ALPHABET 6 // not in iImeState
  75. #define CST_ALPHANUMERIC 7 // not in iImeState
  76. #define CST_INVALID 8 // not in iImeState
  77. #define CST_INVALID_INPUT 9 // not in iImeState
  78. #define CST_ONLINE_CZ 10
  79. #define CST_CAPITAL 11
  80. // state engin
  81. #define ENGINE_COMP 0
  82. #define ENGINE_ASCII 1
  83. #define ENGINE_RESAULT 2
  84. #define ENGINE_CHCAND 3
  85. #define ENGINE_BKSPC 4
  86. #define ENGINE_MULTISEL 5
  87. #define ENGINE_ESC 6
  88. #define CANDPERPAGE 9
  89. #define MAXSTRLEN 40
  90. #define MAXCAND 256
  91. #define IME_MAXCAND 94
  92. #define IME_XGB_MAXCAND 190
  93. #if defined(COMBO_IME)
  94. #define IME_UNICODE_MAXCAND 256
  95. #endif //COMBO_IME
  96. #define MAXCODE 12
  97. #define MAXSOFTKEYS 48
  98. // set ime character
  99. #define SIC_INIT 0
  100. #define SIC_SAVE2 1
  101. #define SIC_READY 2
  102. #define SIC_MODIFY 3
  103. #define SIC_SAVE1 4
  104. #define BOX_UI 0
  105. #define LIN_UI 1
  106. #if defined(COMBO_IME)
  107. #define IMEINDEXNUM 3
  108. #define IME_CMODE_INDEX_FIRST 0x1000
  109. #define INDEX_GB 0
  110. #define INDEX_GBK 1
  111. #define INDEX_UNICODE 2
  112. #endif
  113. // border for UI
  114. #define UI_MARGIN 4
  115. #define COMP_TEXT_Y 17
  116. #define UI_CANDINF 20
  117. #define UI_CANDBTW 13
  118. #define UI_CANDBTH 13
  119. #define UI_CANDICON 16
  120. #define UI_CANDSTR 300
  121. #define STATUS_DIM_X 20
  122. #define STATUS_DIM_Y 20
  123. #define STATUS_NAME_MARGIN 20
  124. // if UI_MOVE_OFFSET == WINDOW_NOTDRAG, not in drag operation
  125. #define WINDOW_NOT_DRAG 0xFFFFFFFF
  126. // window extra for composition window
  127. #define UI_MOVE_OFFSET 0
  128. #define UI_MOVE_XY 4
  129. // the start number of candidate list
  130. #define CAND_START 1
  131. #define uCandHome 0
  132. #define uCandUp 1
  133. #define uCandDown 2
  134. #define uCandEnd 3
  135. #define CandGBinfoLen 64
  136. // the flag for an opened or start UI
  137. #define IMN_PRIVATE_UPDATE_STATUS 0x0001
  138. #define IMN_PRIVATE_COMPOSITION_SIZE 0x0002
  139. #define IMN_PRIVATE_UPDATE_QUICK_KEY 0x0004
  140. #define IMN_PRIVATE_UPDATE_SOFTKBD 0x0005
  141. #define IMN_PRIVATE_DESTROYCANDWIN 0x0006
  142. #define IMN_PRIVATE_CMENUDESTROYED 0x0007
  143. #define IMN_PRIVATE_SOFTKEYMENUDESTROYED 0x0008
  144. #define MSG_ALREADY_OPEN 0x000001
  145. #define MSG_ALREADY_OPEN2 0x000002
  146. #define MSG_OPEN_CANDIDATE 0x000010
  147. #define MSG_OPEN_CANDIDATE2 0x000020
  148. #define MSG_CLOSE_CANDIDATE 0x000100
  149. #define MSG_CLOSE_CANDIDATE2 0x000200
  150. #define MSG_CHANGE_CANDIDATE 0x001000
  151. #define MSG_CHANGE_CANDIDATE2 0x002000
  152. #define MSG_ALREADY_START 0x010000
  153. #define MSG_START_COMPOSITION 0x020000
  154. #define MSG_END_COMPOSITION 0x040000
  155. #define MSG_COMPOSITION 0x080000
  156. #define MSG_IMN_COMPOSITIONPOS 0x100000
  157. #define MSG_IMN_UPDATE_SOFTKBD 0x200000
  158. #define MSG_IMN_UPDATE_STATUS 0x000400
  159. #define MSG_GUIDELINE 0x400000
  160. #define MSG_IN_IMETOASCIIEX 0x800000
  161. #define MSG_IMN_DESTROYCAND 0x004000
  162. #define MSG_BACKSPACE 0x000800
  163. // this constant is depend on TranslateImeMessage
  164. #define GEN_MSG_MAX 6
  165. // the flag for set context
  166. #define SC_SHOW_UI 0x0001
  167. #define SC_HIDE_UI 0x0002
  168. #define SC_ALREADY_SHOW_STATUS 0x0004
  169. #define SC_WANT_SHOW_STATUS 0x0008
  170. #define SC_HIDE_STATUS 0x0010
  171. // the new flag for set context
  172. #define ISC_SHOW_SOFTKBD 0x02000000
  173. #define ISC_OPEN_STATUS_WINDOW 0x04000000
  174. #define ISC_OFF_CARET_UI 0x08000000
  175. #define ISC_SHOW_UI_ALL (ISC_SHOWUIALL|ISC_SHOW_SOFTKBD|ISC_OPEN_STATUS_WINDOW)
  176. #define ISC_SETCONTEXT_UI (ISC_SHOWUIALL|ISC_SHOW_SOFTKBD)
  177. #define ISC_HIDE_COMP_WINDOW 0x00400000
  178. #define ISC_HIDE_CAND_WINDOW 0x00800000
  179. #define ISC_HIDE_SOFTKBD 0x01000000
  180. // the flag for composition string show status
  181. #define IME_STR_SHOWED 0x0001
  182. #define IME_STR_ERROR 0x0002
  183. // the mode configuration for an IME
  184. #define MODE_CONFIG_QUICK_KEY 0x0001
  185. #define MODE_CONFIG_WORD_PREDICT 0x0002
  186. #define MODE_CONFIG_PREDICT 0x0004
  187. // the virtual key value
  188. #define VK_OEM_SEMICLN 0xba // ; :
  189. #define VK_OEM_EQUAL 0xbb // = +
  190. #define VK_OEM_SLASH 0xbf // / ?
  191. #define VK_OEM_LBRACKET 0xdb // [ {
  192. #define VK_OEM_BSLASH 0xdc // \ |
  193. #define VK_OEM_RBRACKET 0xdd // ] }
  194. #define VK_OEM_QUOTE 0xde // ' "
  195. #define MAXMBNUMS 40
  196. // for ime property info
  197. #define MAXNUMCODES 48
  198. #define LINE_LEN 80
  199. #define CLASS_LEN 24
  200. #define NumsSK 13
  201. // mb file for create word
  202. #define ID_LENGTH 28
  203. #define NUMTABLES 7
  204. #define TAG_DESCRIPTION 0x00000001
  205. #define TAG_RULER 0x00000002
  206. #define TAG_CRTWORDCODE 0x00000004
  207. // window extra for context menu owner
  208. #define CMENU_HUIWND 0
  209. #define CMENU_MENU 4
  210. #define SOFTKEYMENU_HUIWND 0
  211. #define SOFTKEYMENU_MENU 4
  212. #define WM_USER_DESTROY (WM_USER + 0x0400)
  213. // the flags for GetNearCaretPosition
  214. #define NEAR_CARET_FIRST_TIME 0x0001
  215. #define NEAR_CARET_CANDIDATE 0x0002
  216. typedef DWORD UNALIGNED FAR *LPUNADWORD;
  217. typedef WORD UNALIGNED FAR *LPUNAWORD;
  218. typedef struct tagImeL { // local structure, per IME structure
  219. DWORD dwSKState[NumsSK];
  220. DWORD dwSKWant;
  221. HMENU hSKMenu; // SoftKeyboard Menu
  222. HMENU hPropMenu; // Property Menu
  223. HINSTANCE hInst; // IME DLL instance handle
  224. int xCompWi; // width
  225. int yCompHi; // height
  226. POINT ptDefComp; // default composition window position
  227. int cxCompBorder; // border width of composition window
  228. int cyCompBorder; // border height of composition window
  229. RECT rcCompText; // text position relative to composition
  230. // window key related data
  231. WORD fModeConfig; // quick key/prediction mode
  232. WORD nMaxKey; // max key of compsiton str
  233. #if defined(COMBO_IME)
  234. DWORD dwRegImeIndex; // this value defers in different
  235. // process, so can not set in sImeG
  236. #endif
  237. BOOL fWinLogon;
  238. } IMEL;
  239. typedef IMEL *PIMEL;
  240. typedef IMEL NEAR *NPIMEL;
  241. typedef IMEL FAR *LPIMEL;
  242. #define NFULLABC 95
  243. typedef struct _tagFullABC { // match with the IMEG
  244. WORD wFullABC[NFULLABC];
  245. } FULLABC;
  246. typedef FULLABC *PFULLABC;
  247. typedef FULLABC NEAR *NPFULLABC;
  248. typedef FULLABC FAR *LPFULLABC;
  249. // global sturcture for ime init data
  250. typedef struct _tagImeG { // global structure, can be share by all IMEs,
  251. // the seperation (IMEL and IMEG) is only
  252. // useful in UNI-IME, other IME can use one
  253. // the system charset is not NATIVE_CHARSET
  254. BOOL fDiffSysCharSet;
  255. // IME Charact
  256. TCHAR UsedCodes[17];
  257. WORD wNumCodes;
  258. DWORD IC_Enter;
  259. DWORD IC_Trace;
  260. RECT rcWorkArea; // the work area of applications
  261. // Chinese char width & height
  262. int xChiCharWi;
  263. int yChiCharHi;
  264. // candidate list of composition
  265. int xCandWi; // width of candidate list
  266. int yCandHi; // high of candidate list
  267. int cxCandBorder; // border width of candidate list
  268. int cyCandBorder; // border height of candidate list
  269. RECT rcCandText; // text position relative to candidate window
  270. RECT rcCandBTD;
  271. RECT rcCandBTU;
  272. RECT rcCandBTE;
  273. RECT rcCandBTH;
  274. RECT rcCandInf;
  275. RECT rcCandIcon;
  276. // status window
  277. int xStatusWi; // width of status window
  278. int yStatusHi; // high of status window
  279. RECT rcStatusText; // text position relative to status window
  280. RECT rcImeIcon; // ImeIcon position relative to status window
  281. RECT rcImeName; // ImeName position relative to status window
  282. RECT rcShapeText; // shape text relative to status window
  283. RECT rcSymbol; // symbol relative to status window
  284. RECT rcSKText; // SK text relative to status window
  285. // full shape space (reversed internal code)
  286. WORD wFullSpace;
  287. // full shape chars (internal code)
  288. WORD wFullABC[NFULLABC];
  289. // error string
  290. TCHAR szStatusErr[8];
  291. int cbStatusErr;
  292. // candidate string start from 0 or 1
  293. int iCandStart;
  294. // setting of UI
  295. int iPara;
  296. int iPerp;
  297. int iParaTol;
  298. int iPerpTol;
  299. #if defined(CROSSREF)
  300. // reverse conversion
  301. HKL hRevKL; // the HKL of reverse mapping IME
  302. DWORD nRevMaxKey;
  303. #endif //CROSSREF
  304. } IMEG;
  305. typedef IMEG *PIMEG;
  306. typedef IMEG NEAR *NPIMEG;
  307. typedef IMEG FAR *LPIMEG;
  308. #define IME_SELECT_GB 0x0001
  309. #define IME_SELECT_XGB 0x0002
  310. #define IME_SELECT_AREA 0x0004
  311. typedef struct _tagPRIVCONTEXT {// IME private data for each context
  312. int iImeState; // the composition state - input, choose, or
  313. BOOL fdwImeMsg; // what messages should be generated
  314. DWORD dwCompChar; // wParam of WM_IME_COMPOSITION
  315. DWORD fdwGcsFlag; // lParam for WM_IME_COMPOSITION
  316. UINT uSYHFlg;
  317. UINT uDYHFlg;
  318. UINT uDSMHCount;
  319. UINT uDSMHFlg;
  320. // input data
  321. TCHAR bSeq[13]; // sequence code of input char
  322. DWORD fdwGB;
  323. #ifdef CROSSREF
  324. HIMCC hRevCandList; // memory for reconsion result
  325. #endif //CROSSREF
  326. } PRIVCONTEXT;
  327. typedef PRIVCONTEXT *PPRIVCONTEXT;
  328. typedef PRIVCONTEXT NEAR *NPPRIVCONTEXT;
  329. typedef PRIVCONTEXT FAR *LPPRIVCONTEXT;
  330. typedef struct _tagUIPRIV { // IME private UI data
  331. HWND hCompWnd; // composition window
  332. int nShowCompCmd;
  333. HWND hCandWnd; // candidate window for composition
  334. int nShowCandCmd;
  335. HWND hSoftKbdWnd; // soft keyboard window
  336. int nShowSoftKbdCmd;
  337. HWND hStatusWnd; // status window
  338. int nShowStatusCmd;
  339. DWORD fdwSetContext; // the actions to take at set context time
  340. HIMC hIMC; // the recent selected hIMC
  341. HWND hCMenuWnd; // a window owner for context menu
  342. HWND hSoftkeyMenuWnd; // a window owner for softkeyboard menu
  343. } UIPRIV;
  344. typedef UIPRIV *PUIPRIV;
  345. typedef UIPRIV NEAR *NPUIPRIV;
  346. typedef UIPRIV FAR *LPUIPRIV;
  347. typedef struct tagNEARCARET { // for near caret offset calculatation
  348. int iLogFontFacX;
  349. int iLogFontFacY;
  350. int iParaFacX;
  351. int iPerpFacX;
  352. int iParaFacY;
  353. int iPerpFacY;
  354. } NEARCARET;
  355. typedef NEARCARET *PNEARCARET;
  356. typedef NEARCARET NEAR *NPNEARCARET;
  357. typedef NEARCARET FAR *LPNEARCARET;
  358. extern HINSTANCE hInst;
  359. extern IMEG sImeG;
  360. extern IMEL sImeL;
  361. extern LPIMEL lpImeL;
  362. extern HDC ST_UI_hDC;
  363. extern UINT uStartComp;
  364. extern UINT uOpenCand;
  365. extern UINT uCaps;
  366. extern DWORD SaTC_Trace;
  367. extern TCHAR szUIClassName[];
  368. extern TCHAR szCompClassName[];
  369. extern TCHAR szCandClassName[];
  370. extern TCHAR szStatusClassName[];
  371. extern TCHAR szCMenuClassName[];
  372. extern TCHAR szSoftkeyMenuClassName[];
  373. extern TCHAR szHandCursor[];
  374. extern TCHAR szChinese[];
  375. extern TCHAR szCandInf[];
  376. #if defined(COMBO_IME)
  377. extern TCHAR pszImeName[IMEINDEXNUM][MAX_PATH];
  378. extern TCHAR *szImeName;
  379. extern TCHAR szImeRegName[];
  380. #else
  381. extern TCHAR szImeName[];
  382. #endif //COMBO_IME
  383. extern TCHAR szImeXGBName[];
  384. extern TCHAR szSymbol[];
  385. extern TCHAR szNoSymbol[];
  386. extern TCHAR szEnglish[];
  387. extern TCHAR szCode[];
  388. extern TCHAR szEudc[];
  389. extern TCHAR szFullShape[];
  390. extern TCHAR szHalfShape[];
  391. extern TCHAR szNone[];
  392. extern TCHAR szSoftKBD[];
  393. extern TCHAR szNoSoftKBD[];
  394. extern TCHAR szDigit[];
  395. extern BYTE bUpper[];
  396. extern WORD fMask[];
  397. extern TCHAR szRegIMESetting[];
  398. extern TCHAR szPerp[];
  399. extern TCHAR szPara[];
  400. extern TCHAR szPerpTol[];
  401. extern TCHAR szParaTol[];
  402. #if defined(COMBO_IME)
  403. extern TCHAR szRegImeIndex[];
  404. #endif
  405. extern const NEARCARET ncUIEsc[], ncAltUIEsc[];
  406. extern const POINT ptInputEsc[], ptAltInputEsc[];
  407. extern BYTE VirtKey48Map[];
  408. extern TCHAR szTrace[];
  409. extern TCHAR szWarnTitle[];
  410. extern TCHAR szErrorTitle[];
  411. #if defined(CROSSREF)
  412. extern TCHAR szRegRevKL[];
  413. extern TCHAR szRegRevMaxKey[];
  414. #endif
  415. int WINAPI LibMain(HANDLE, WORD, WORD, LPTSTR); // init.c
  416. LRESULT CALLBACK UIWndProc(HWND, UINT, WPARAM, LPARAM); // ui.c
  417. LRESULT PASCAL UIPaint(HWND); // ui.c
  418. // for engine
  419. WORD PASCAL GBEngine(LPPRIVCONTEXT);
  420. WORD PASCAL AsciiToGB(LPPRIVCONTEXT);
  421. WORD PASCAL AsciiToArea(LPPRIVCONTEXT);
  422. WORD PASCAL CharToHex(TCHAR);
  423. void PASCAL AddCodeIntoCand(LPCANDIDATELIST, WORD); // compose.c
  424. void PASCAL CompWord(WORD, LPINPUTCONTEXT, LPCOMPOSITIONSTRING, LPPRIVCONTEXT,
  425. LPGUIDELINE); // compose.c
  426. UINT PASCAL Finalize(LPINPUTCONTEXT, LPCOMPOSITIONSTRING,
  427. LPPRIVCONTEXT, WORD); // compose.c
  428. void PASCAL CompEscapeKey(LPINPUTCONTEXT, LPCOMPOSITIONSTRING,
  429. LPGUIDELINE, LPPRIVCONTEXT); // compose.c
  430. void PASCAL SelectOneCand(LPINPUTCONTEXT, LPCOMPOSITIONSTRING,
  431. LPPRIVCONTEXT, LPCANDIDATELIST); // chcand.c
  432. void PASCAL CandEscapeKey(LPINPUTCONTEXT, LPPRIVCONTEXT); // chcand.c
  433. void PASCAL ChooseCand(WORD, LPINPUTCONTEXT, LPCANDIDATEINFO,
  434. LPPRIVCONTEXT); // chcand.c
  435. void PASCAL SetPrivateFileSetting(LPBYTE, int, DWORD, LPCTSTR); // ddis.c
  436. void PASCAL InitCompStr(LPCOMPOSITIONSTRING); // ddis.c
  437. BOOL PASCAL ClearCand(LPINPUTCONTEXT); // ddis.c
  438. LONG OpenReg_PathSetup(HKEY *);
  439. LONG OpenReg_User(HKEY ,LPCTSTR ,PHKEY);
  440. VOID InfoMessage(HANDLE ,WORD ); //ddis.c
  441. VOID FatalMessage(HANDLE ,WORD); //ddis.c
  442. #if defined(CROSSREF)
  443. void PASCAL ReverseConversionList(HWND); // ddis.c
  444. void CrossReverseConv(LPINPUTCONTEXT, LPCOMPOSITIONSTRING, LPPRIVCONTEXT, LPCANDIDATELIST);
  445. #endif
  446. UINT PASCAL TranslateImeMessage(LPTRANSMSGLIST, LPINPUTCONTEXT, LPPRIVCONTEXT); // toascii.c
  447. void PASCAL GenerateMessage(HIMC, LPINPUTCONTEXT,LPPRIVCONTEXT); // notify.c
  448. DWORD PASCAL ReadingToPattern(LPCTSTR, BOOL); // regword.c
  449. void PASCAL ReadingToSequence(LPCTSTR, LPBYTE, BOOL); // regword.c
  450. void PASCAL DrawDragBorder(HWND, LONG, LONG); // uisubs.c
  451. void PASCAL DrawFrameBorder(HDC, HWND); // uisubs.c
  452. void PASCAL ContextMenu(HWND, int, int); // uisubs.c
  453. void PASCAL SoftkeyMenu(HWND, int, int); // uisubs.c
  454. LRESULT CALLBACK ContextMenuWndProc(HWND, UINT, WPARAM,LPARAM); // uisubs.c
  455. LRESULT CALLBACK SoftkeyMenuWndProc(HWND, UINT, WPARAM,LPARAM); // uisubs.c
  456. HWND PASCAL GetCompWnd(HWND); // compui.c
  457. void PASCAL SetCompPosition(HWND, HIMC, LPINPUTCONTEXT); // compui.c
  458. void PASCAL SetCompWindow(HWND); // compui.c
  459. void PASCAL MoveDefaultCompPosition(HWND); // compui.c
  460. void PASCAL ShowComp(HWND, int); // compui.c
  461. void PASCAL StartComp(HWND); // compui.c
  462. void PASCAL EndComp(HWND); // compui.c
  463. void PASCAL UpdateCompWindow(HWND); // compui.c
  464. LRESULT CALLBACK CompWndProc(HWND, UINT, WPARAM, LPARAM); // compui.c
  465. void PASCAL CompCancel(HIMC, LPINPUTCONTEXT);
  466. HWND PASCAL GetCandWnd(HWND); // candui.c
  467. void PASCAL CalcCandPos(HIMC, HWND, LPPOINT); // candui.c
  468. LRESULT PASCAL SetCandPosition(HWND); // candui.c
  469. void PASCAL ShowCand(HWND, int); // candui.c
  470. void PASCAL OpenCand(HWND); // candui.c
  471. void PASCAL CloseCand(HWND); // candui.c
  472. void PASCAL PaintCandWindow(HWND, HDC); // candui.c
  473. LRESULT CALLBACK CandWndProc(HWND, UINT, WPARAM, LPARAM); // candui.c
  474. void PASCAL UpdateSoftKbd(HWND);
  475. HWND PASCAL GetStatusWnd(HWND); // statusui.c
  476. LRESULT PASCAL SetStatusWindowPos(HWND); // statusui.c
  477. void PASCAL ShowStatus(HWND, int); // statusui.c
  478. void PASCAL OpenStatus(HWND); // statusui.c
  479. LRESULT CALLBACK StatusWndProc(HWND, UINT, WPARAM, LPARAM); // statusui.c
  480. void DrawConvexRect(HDC, int, int, int, int);
  481. void DrawConvexRectP(HDC, int, int, int, int);
  482. void DrawConcaveRect(HDC, int, int, int, int);
  483. BOOL IsUsedCode(WORD);
  484. void PASCAL InitStatusUIData(int, int);
  485. void PASCAL InitCandUIData(int, int, int);
  486. BOOL UpdateStatusWindow(HWND);
  487. void PASCAL EngChCand(LPCOMPOSITIONSTRING, LPCANDIDATELIST, LPPRIVCONTEXT, LPINPUTCONTEXT, WORD);
  488. void PASCAL CandPageDownUP(HWND, UINT);
  489. void PASCAL GenerateImeMessage(HIMC, LPINPUTCONTEXT, DWORD);
  490. UINT PASCAL TranslateSymbolChar(LPTRANSMSGLIST, WORD, BOOL);
  491. UINT PASCAL TranslateFullChar(LPTRANSMSGLIST, WORD);
  492. UINT PASCAL ConvListProcessKey(BYTE,LPPRIVCONTEXT); //ddis.c
  493. UINT PASCAL GBProcessKey(WORD, LPPRIVCONTEXT);
  494. UINT PASCAL XGBProcessKey(WORD, LPPRIVCONTEXT);
  495. WORD PASCAL XGBEngine(LPPRIVCONTEXT);
  496. void PASCAL XGBAddCodeIntoCand(LPCANDIDATELIST, WORD); // compose.c
  497. UINT PASCAL UnicodeProcessKey(WORD wCharCode, LPPRIVCONTEXT lpImcP);
  498. WORD PASCAL UnicodeEngine(LPPRIVCONTEXT lpImcP);
  499. #if defined(COMBO_IME)
  500. void PASCAL UnicodeAddCodeIntoCand(LPCANDIDATELIST, WORD);
  501. #endif
  502. // dialog procedure
  503. INT_PTR CALLBACK ImeVerDlgProc(HWND, UINT, WPARAM, LPARAM);
  504. INT_PTR CALLBACK CrtWordDlgProc(HWND, UINT, WPARAM, LPARAM);
  505. INT_PTR CALLBACK SetImeDlgProc(HWND, UINT, WPARAM, LPARAM);
  506. #ifdef MUL_MONITOR // Multi-Monitor Support
  507. RECT PASCAL ImeMonitorWorkAreaFromWindow(HWND); // mmonitor.c
  508. RECT PASCAL ImeMonitorWorkAreaFromPoint(POINT); // mmonitor.c
  509. RECT PASCAL ImeMonitorWorkAreaFromRect(LPRECT); // mmonitor.c
  510. #endif
  511. #ifdef UNICODE
  512. extern TCHAR SKLayout[NumsSK][MAXSOFTKEYS];
  513. extern TCHAR SKLayoutS[NumsSK][MAXSOFTKEYS];
  514. #else
  515. extern BYTE SKLayout[NumsSK][MAXSOFTKEYS*2];
  516. extern BYTE SKLayoutS[NumsSK][MAXSOFTKEYS*2];
  517. #endif //UNICODE