841 lines
24 KiB
C
841 lines
24 KiB
C
|
|
/*************************************************
|
|
* imedefs.h *
|
|
* *
|
|
* Copyright (C) 1995-1999 Microsoft Inc. *
|
|
* *
|
|
*************************************************/
|
|
|
|
// IME designer can change this file according to each IME
|
|
#include "immsec.h"
|
|
|
|
// debug flag
|
|
#define DEB_FATAL 0
|
|
#define DEB_ERR 1
|
|
#define DEB_WARNING 2
|
|
#define DEB_TRACE 3
|
|
|
|
#ifdef _WIN32
|
|
void FAR cdecl _DebugOut(UINT, LPCSTR, ...);
|
|
#endif
|
|
|
|
#define NATIVE_CHARSET CHINESEBIG5_CHARSET
|
|
#define NATIVE_LANGUAGE 0x0404
|
|
|
|
|
|
#ifdef UNICODE
|
|
#define NATIVE_CP 1200
|
|
#define ALT_NATIVE_CP 938
|
|
#define MAX_EUDC_CHARS 6217
|
|
#else
|
|
#define NATIVE_CP 950
|
|
#define ALT_NATIVE_CP 938
|
|
#define MAX_EUDC_CHARS 5809
|
|
#endif
|
|
|
|
#define NATIVE_ANSI_CP 950
|
|
|
|
|
|
#if !defined(ROMANIME) && !defined(WINIME)
|
|
#define SIGN_CWIN 0x4E495743
|
|
#define SIGN__TBL 0x4C42545F
|
|
#endif
|
|
|
|
|
|
#if !defined(MINIIME)
|
|
|
|
#if !defined(ROMANIME)
|
|
// table load status
|
|
#define TBL_NOTLOADED 0
|
|
#define TBL_LOADED 1
|
|
#define TBL_LOADERR 2
|
|
|
|
// error MessageBox flags
|
|
#define ERRMSG_LOAD_0 0x0010
|
|
#define ERRMSG_LOAD_1 0x0020
|
|
#define ERRMSG_LOAD_2 0x0040
|
|
#define ERRMSG_LOAD_3 0x0080
|
|
#define ERRMSG_LOAD_USRDIC 0x0400
|
|
#define ERRMSG_MEM_0 0x1000
|
|
#define ERRMSG_MEM_1 0x2000
|
|
#define ERRMSG_MEM_2 0x4000
|
|
#define ERRMSG_MEM_3 0x8000
|
|
#define ERRMSG_MEM_USRDIC 0x00040000
|
|
|
|
|
|
// hack flag, I borrow one bit from fdwErrMsg for reverse conversion
|
|
#define NO_REV_LENGTH 0x80000000
|
|
|
|
|
|
// state of composition
|
|
#define CST_INIT 0
|
|
#define CST_INPUT 1
|
|
#define CST_CHOOSE 2
|
|
#define CST_SYMBOL 3
|
|
#define CST_ALPHABET 4 // not in iImeState
|
|
#endif
|
|
|
|
#if defined(DAYI)
|
|
#define CST_ROAD 5 // not in iImeState
|
|
#else
|
|
#define CST_EURO 5
|
|
#endif
|
|
|
|
#define CST_ALPHANUMERIC 6 // not in iImeState
|
|
#define CST_INVALID 7 // not in iImeState
|
|
|
|
#define CST_IME_HOTKEYS 0x40 // not in iImeState
|
|
#define CST_RESEND_RESULT (CST_IME_HOTKEYS)
|
|
#define CST_PREVIOUS_COMP (CST_IME_HOTKEYS+1)
|
|
#define CST_TOGGLE_UI (CST_IME_HOTKEYS+2)
|
|
|
|
// IME specific constants
|
|
#if defined(WINAR30) || defined(DAYI)
|
|
#define CANDPERPAGE 10
|
|
#else
|
|
#define CANDPERPAGE 9
|
|
#endif
|
|
|
|
#define CHOOSE_PREVPAGE 0x10
|
|
#define CHOOSE_NEXTPAGE 0x11
|
|
#define CHOOSE_CIRCLE 0x12
|
|
#define CHOOSE_HOME 0x13
|
|
|
|
#define MAXSTRLEN 128
|
|
#define MAXCAND 256
|
|
|
|
#define CAND_PROMPT_PHRASE 0
|
|
#define CAND_PROMPT_QUICK_VIEW 1
|
|
#define CAND_PROMPT_NORMAL 2
|
|
|
|
// max composition ways of one big5 code, it is for reverse conversion
|
|
#if defined(ROMANIME)
|
|
#define MAX_COMP 0
|
|
#elif defined(WINIME)
|
|
#define MAX_COMP 1
|
|
#else
|
|
#define MAX_COMP 10
|
|
#endif
|
|
#define MAX_COMP_BUF 10
|
|
|
|
// border for UI
|
|
#define UI_MARGIN 4
|
|
|
|
#define STATUS_DIM_X 24
|
|
#define STATUS_DIM_Y 24
|
|
|
|
#define CAND_PROMPT_DIM_X 80
|
|
#define CAND_PROMPT_DIM_Y 16
|
|
|
|
#define PAGE_DIM_X 16
|
|
#define PAGE_DIM_Y CAND_PROMPT_DIM_Y
|
|
|
|
// if UI_MOVE_OFFSET == WINDOW_NOTDRAG, not in drag operation
|
|
#define WINDOW_NOT_DRAG 0xFFFFFFFF
|
|
|
|
// window extra for composition window
|
|
#define UI_MOVE_OFFSET 0
|
|
#define UI_MOVE_XY 4
|
|
|
|
// window extra for context menu owner
|
|
#define CMENU_HUIWND 0
|
|
#define CMENU_MENU (CMENU_HUIWND+sizeof(LONG_PTR))
|
|
#define WND_EXTRA_SIZE (CMENU_MENU+sizeof(LONG_PTR))
|
|
|
|
#define WM_USER_DESTROY (WM_USER + 0x0400)
|
|
#define WM_USER_UICHANGE (WM_USER + 0x0401)
|
|
|
|
// the flags for GetNearCaretPosition
|
|
#define NEAR_CARET_FIRST_TIME 0x0001
|
|
#define NEAR_CARET_CANDIDATE 0x0002
|
|
|
|
// the flag for an opened or start UI
|
|
#define IMN_PRIVATE_TOGGLE_UI 0x0001
|
|
#define IMN_PRIVATE_CMENUDESTROYED 0x0002
|
|
|
|
#if !defined(ROMANIME)
|
|
#define IMN_PRIVATE_COMPOSITION_SIZE 0x0003
|
|
#define IMN_PRIVATE_UPDATE_PREDICT 0x0004
|
|
#if defined(WINAR30)
|
|
#define IMN_PRIVATE_UPDATE_QUICK_KEY 0x0005
|
|
#else
|
|
#define IMN_PRIVATE_UPDATE_SOFTKBD 0x0006
|
|
#endif
|
|
#define IMN_PRIVATE_PAGEUP 0x0007
|
|
#endif
|
|
|
|
#define MSG_COMPOSITION 0x0000001
|
|
|
|
#if !defined(ROMANIME)
|
|
#define MSG_START_COMPOSITION 0x0000002
|
|
#define MSG_END_COMPOSITION 0x0000004
|
|
#define MSG_ALREADY_START 0x0000008
|
|
#define MSG_CHANGE_CANDIDATE 0x0000010
|
|
#define MSG_OPEN_CANDIDATE 0x0000020
|
|
#define MSG_CLOSE_CANDIDATE 0x0000040
|
|
#define MSG_ALREADY_OPEN 0x0000080
|
|
#define MSG_GUIDELINE 0x0000100
|
|
#define MSG_IMN_COMPOSITIONPOS 0x0000200
|
|
#define MSG_IMN_COMPOSITIONSIZE 0x0000400
|
|
#define MSG_IMN_UPDATE_PREDICT 0x0000800
|
|
#if defined(WINAR30)
|
|
#define MSG_IMN_UPDATE_QUICK_KEY 0x0001000
|
|
#else
|
|
#define MSG_IMN_UPDATE_SOFTKBD 0x0002000
|
|
#endif
|
|
#define MSG_ALREADY_SOFTKBD 0x0004000
|
|
#define MSG_IMN_PAGEUP 0x0008000
|
|
|
|
// original reserve for old array, now we switch to new, no one use yet
|
|
#define MSG_CHANGE_CANDIDATE2 0x1000000
|
|
#define MSG_OPEN_CANDIDATE2 0x2000000
|
|
#define MSG_CLOSE_CANDIDATE2 0x4000000
|
|
#define MSG_ALREADY_OPEN2 0x8000000
|
|
|
|
#define MSG_STATIC_STATE (MSG_ALREADY_START|MSG_ALREADY_OPEN|MSG_ALREADY_SOFTKBD|MSG_ALREADY_OPEN2)
|
|
#endif // !defined(ROMANIME)
|
|
|
|
#define MSG_IMN_TOGGLE_UI 0x0400000
|
|
#define MSG_IN_IMETOASCIIEX 0x0800000
|
|
|
|
#define ISC_HIDE_COMP_WINDOW 0x00400000
|
|
#define ISC_HIDE_CAND_WINDOW 0x00800000
|
|
#define ISC_HIDE_SOFTKBD 0x01000000
|
|
#define ISC_LAZY_OPERATION (ISC_HIDE_COMP_WINDOW|ISC_HIDE_CAND_WINDOW|ISC_HIDE_SOFTKBD)
|
|
#define ISC_SHOW_SOFTKBD 0x02000000
|
|
#define ISC_OPEN_STATUS_WINDOW 0x04000000
|
|
#define ISC_OFF_CARET_UI 0x08000000
|
|
#define ISC_SHOW_PRIV_UI (ISC_SHOW_SOFTKBD|ISC_OPEN_STATUS_WINDOW|ISC_OFF_CARET_UI)
|
|
#define ISC_SHOW_UI_ALL (ISC_SHOWUIALL|ISC_SHOW_SOFTKBD|ISC_OPEN_STATUS_WINDOW)
|
|
#define ISC_SETCONTEXT_UI (ISC_SHOWUIALL|ISC_SHOW_SOFTKBD)
|
|
|
|
#if (ISC_SHOWUIALL & (ISC_LAZY_OPERATION|ISC_SHOW_PRIV_UI))
|
|
#error bit confliction
|
|
#endif
|
|
|
|
#if defined(CHAJEI) || defined(QUICK) || defined(WINAR30)
|
|
#define GHOSTCARD_SEQCODE 0x3F
|
|
#endif
|
|
|
|
#if defined(WINAR30)
|
|
#define WILDCARD_SEQCODE 0x3E
|
|
#endif
|
|
|
|
// the virtual key value
|
|
#define VK_OEM_SEMICLN 0xba // ; :
|
|
#define VK_OEM_EQUAL 0xbb // = +
|
|
#define VK_OEM_SLASH 0xbf // / ?
|
|
#define VK_OEM_LBRACKET 0xdb // [ {
|
|
#define VK_OEM_BSLASH 0xdc // \ |
|
|
#define VK_OEM_RBRACKET 0xdd // ] }
|
|
#define VK_OEM_QUOTE 0xde // ' "
|
|
|
|
|
|
typedef DWORD UNALIGNED FAR *LPUNADWORD;
|
|
typedef WORD UNALIGNED FAR *LPUNAWORD;
|
|
typedef WCHAR UNALIGNED *LPUNAWSTR;
|
|
|
|
#define NFULLABC 95
|
|
typedef struct tagFullABC {
|
|
WORD wFullABC[NFULLABC];
|
|
} FULLABC;
|
|
|
|
typedef FULLABC *PFULLABC;
|
|
typedef FULLABC NEAR *NPFULLABC;
|
|
typedef FULLABC FAR *LPFULLABC;
|
|
|
|
|
|
#if defined(DAYI)
|
|
#define NSYMBOL 0x41
|
|
#else
|
|
#define NSYMBOL 0x40
|
|
#endif
|
|
|
|
typedef struct tagSymbol {
|
|
WORD wSymbol[NSYMBOL];
|
|
} SYMBOL;
|
|
|
|
typedef SYMBOL *PSYMBOL;
|
|
typedef SYMBOL NEAR *NPSYMBOL;
|
|
typedef SYMBOL FAR *LPSYMBOL;
|
|
|
|
|
|
#define NUM_OF_IME_HOTKEYS 3
|
|
|
|
#if defined(UNIIME)
|
|
#define MAX_PHRASE_TABLES 2
|
|
#if defined(MAX_NAME_LENGTH)
|
|
|
|
#if (MAX_NAME_LENGTH) != 32
|
|
#error MAX_NAME_LENGTH not the same in other header file
|
|
#endif
|
|
|
|
#else
|
|
#define MAX_NAME_LENGTH 32
|
|
#endif
|
|
|
|
typedef struct tagPhraseTables { // match with the IMEG
|
|
TCHAR szTblFile[MAX_PHRASE_TABLES][MAX_NAME_LENGTH / sizeof(TCHAR)];
|
|
} PHRASETABLES;
|
|
|
|
typedef PHRASETABLES *PPHRASETABLES;
|
|
typedef PHRASETABLES NEAR *NPPHRASETABLES;
|
|
typedef PHRASETABLES FAR *LPPHRASETABLES;
|
|
#endif
|
|
|
|
|
|
typedef struct tagImeG { // global structure, can be shared by all
|
|
// IMEs, the seperation (IMEL and IMEG) is
|
|
// only useful in UNI-IME, other IME can use
|
|
// one data structure
|
|
RECT rcWorkArea; // the work area of applications
|
|
// full shape space (reversed internal code)
|
|
WORD wFullSpace;
|
|
// full shape chars (internal code)
|
|
WORD wFullABC[NFULLABC];
|
|
#ifdef HANDLE_PRIVATE_HOTKEY
|
|
// IME hot keys
|
|
// modifiers of IME hot key
|
|
UINT uModifiers[NUM_OF_IME_HOTKEYS];
|
|
// virtual key of IME hot key
|
|
UINT uVKey[NUM_OF_IME_HOTKEYS];
|
|
#endif
|
|
UINT uAnsiCodePage;
|
|
#if !defined(ROMANIME)
|
|
// the system charset is not NATIVE_CHARSET
|
|
BOOL fDiffSysCharSet;
|
|
// Chinese char width & height
|
|
int xChiCharWi;
|
|
int yChiCharHi;
|
|
#if !defined(WINAR30)
|
|
// symbol chars (internal code)
|
|
WORD wSymbol[NSYMBOL];
|
|
#if defined(DAYI)
|
|
WORD wDummy; // DWORD boundary
|
|
#endif
|
|
#endif
|
|
#if defined(UNIIME)
|
|
DWORD fdwErrMsg; // error message flag
|
|
UINT uPathLen;
|
|
TCHAR szPhrasePath[MAX_PATH];
|
|
// size of phrase tables
|
|
UINT uTblSize[MAX_PHRASE_TABLES];
|
|
// filename of phrase tables
|
|
TCHAR szTblFile[MAX_PHRASE_TABLES][MAX_NAME_LENGTH / sizeof(TCHAR)];
|
|
// the phrase table handle
|
|
#endif
|
|
// setting of UI
|
|
int iPara;
|
|
int iPerp;
|
|
int iParaTol;
|
|
int iPerpTol;
|
|
#endif // !defined(ROMANIME)
|
|
} IMEG;
|
|
|
|
typedef IMEG *PIMEG;
|
|
typedef IMEG NEAR *NPIMEG;
|
|
typedef IMEG FAR *LPIMEG;
|
|
|
|
|
|
#if defined(UNIIME)
|
|
typedef struct tagInstG { // instance global structure, can be
|
|
// shared by all IMEs
|
|
HANDLE hMapTbl[MAX_PHRASE_TABLES];
|
|
} INSTDATAG;
|
|
#endif
|
|
|
|
|
|
typedef struct tagPRIVCONTEXT { // IME private data for each context
|
|
BOOL fdwImeMsg; // what messages should be generated
|
|
DWORD dwCompChar; // wParam of WM_IME_COMPOSITION
|
|
DWORD fdwGcsFlag; // lParam for WM_IME_COMPOSITION
|
|
DWORD fdwInit; // position init
|
|
#if !defined(ROMANIME)
|
|
int iImeState; // the composition state - input, choose, or
|
|
// input data
|
|
BYTE bSeq[8]; // sequence code of input char
|
|
DWORD dwPattern;
|
|
int iInputEnd;
|
|
#if defined(CHAJEI) || defined(QUICK) || defined(WINAR30)
|
|
int iGhostCard;
|
|
#endif
|
|
#if defined(WINAR30)
|
|
DWORD dwWildCardMask;
|
|
DWORD dwLastWildCard;
|
|
#endif
|
|
// the previous dwPageStart before page up
|
|
DWORD dwPrevPageStart;
|
|
#endif
|
|
} PRIVCONTEXT;
|
|
|
|
typedef PRIVCONTEXT *PPRIVCONTEXT;
|
|
typedef PRIVCONTEXT NEAR *NPPRIVCONTEXT;
|
|
typedef PRIVCONTEXT FAR *LPPRIVCONTEXT;
|
|
|
|
|
|
typedef struct tagUIPRIV { // IME private UI data
|
|
#if !defined(ROMANIME)
|
|
HWND hCompWnd; // composition window
|
|
int nShowCompCmd;
|
|
HWND hCandWnd; // candidate window for composition
|
|
int nShowCandCmd;
|
|
HWND hSoftKbdWnd; // soft keyboard window
|
|
int nShowSoftKbdCmd;
|
|
#endif
|
|
HWND hStatusWnd; // status window
|
|
int nShowStatusCmd;
|
|
DWORD fdwSetContext; // the actions to take at set context time
|
|
HIMC hCacheIMC; // the recent selected hIMC
|
|
HWND hCMenuWnd; // a window owner for context menu
|
|
} UIPRIV;
|
|
|
|
typedef UIPRIV *PUIPRIV;
|
|
typedef UIPRIV NEAR *NPUIPRIV;
|
|
typedef UIPRIV FAR *LPUIPRIV;
|
|
|
|
|
|
typedef struct tagNEARCARET { // for near caret offset calculatation
|
|
int iLogFontFacX;
|
|
int iLogFontFacY;
|
|
int iParaFacX;
|
|
int iPerpFacX;
|
|
int iParaFacY;
|
|
int iPerpFacY;
|
|
} NEARCARET;
|
|
|
|
typedef NEARCARET *PNEARCARET;
|
|
typedef NEARCARET NEAR *NPNEARCARET;
|
|
typedef NEARCARET FAR *LPNEARCARET;
|
|
|
|
|
|
#ifndef RC_INVOKED
|
|
#pragma pack(1)
|
|
#endif
|
|
|
|
typedef struct tagUSRDICIMHDR {
|
|
WORD uHeaderSize; // 0x00
|
|
BYTE idUserCharInfoSign[8]; // 0x02
|
|
BYTE idMajor; // 0x0A
|
|
BYTE idMinor; // 0x0B
|
|
DWORD ulTableCount; // 0x0C
|
|
WORD cMethodKeySize; // 0x10
|
|
BYTE uchBankID; // 0x12
|
|
WORD idInternalBankID; // 0x13
|
|
BYTE achCMEXReserved1[43]; // 0x15
|
|
WORD uInfoSize; // 0x40
|
|
BYTE chCmdKey; // 0x42
|
|
BYTE idStlnUpd; // 0x43
|
|
BYTE cbField; // 0x44
|
|
WORD idCP; // 0x45
|
|
BYTE achMethodName[6]; // 0x47
|
|
BYTE achCSIReserved2[51]; // 0x4D
|
|
BYTE achCopyRightMsg[128]; // 0x80
|
|
} USRDICIMHDR;
|
|
|
|
typedef USRDICIMHDR *PUSRDICIMHDR;
|
|
typedef USRDICIMHDR NEAR *NPUSRDICIMHDR;
|
|
typedef USRDICIMHDR FAR *LPUSRDICIMHDR;
|
|
|
|
|
|
typedef struct tagMETHODNAME {
|
|
BYTE achMethodName[6];
|
|
} METHODNAME;
|
|
|
|
typedef METHODNAME *PMETHODNAME;
|
|
typedef METHODNAME NEAR *NPMETHODNAME;
|
|
typedef METHODNAME FAR *LPMETHODNAME;
|
|
|
|
|
|
#ifndef RC_INVOKED
|
|
#pragma pack()
|
|
#endif
|
|
|
|
#endif // !defined(MINIIME)
|
|
|
|
|
|
extern HINSTANCE hInst;
|
|
#if defined(UNIIME)
|
|
extern INSTDATAG sInstG;
|
|
#endif
|
|
|
|
|
|
#if !defined(MINIIME)
|
|
extern IMEG sImeG;
|
|
|
|
|
|
#if !defined(ROMANIME)
|
|
extern int iDx[3 * CANDPERPAGE];
|
|
|
|
extern const TCHAR szDigit[];
|
|
|
|
extern const BYTE bUpper[];
|
|
extern const WORD fMask[];
|
|
|
|
extern const TCHAR szRegNearCaret[];
|
|
extern const TCHAR szPhraseDic[];
|
|
extern const TCHAR szPhrasePtr[];
|
|
extern const TCHAR szPerp[];
|
|
extern const TCHAR szPara[];
|
|
extern const TCHAR szPerpTol[];
|
|
extern const TCHAR szParaTol[];
|
|
extern const NEARCARET ncUIEsc[], ncAltUIEsc[];
|
|
extern const POINT ptInputEsc[], ptAltInputEsc[];
|
|
|
|
#if defined(PHON)
|
|
extern const TCHAR szRegReadLayout[];
|
|
#endif
|
|
extern const TCHAR szRegRevKL[];
|
|
extern const TCHAR szRegUserDic[];
|
|
#endif
|
|
|
|
extern const TCHAR szRegAppUser[];
|
|
extern const TCHAR szRegModeConfig[];
|
|
|
|
extern const BYTE bChar2VirtKey[];
|
|
|
|
#if defined(PHON)
|
|
extern const BYTE bStandardLayout[READ_LAYOUTS][0x41];
|
|
extern const char cIndexTable[];
|
|
extern const char cSeq2IndexTbl[];
|
|
#endif
|
|
|
|
|
|
#ifdef UNICODE
|
|
|
|
#if defined(PHON) || defined(DAYI)
|
|
extern const BYTE bValidFirstHex[];
|
|
extern const BYTE bInverseEncode[];
|
|
|
|
#define IsValidCode(uCode) bValidFirstHex[uCode >> 12]
|
|
#define InverseEncode(uCode) ((uCode & 0x0FFF) | (bInverseEncode[uCode >> 12] << 12))
|
|
#endif // defined(PHON) || defined(DAYI)
|
|
|
|
#endif // UNICODE
|
|
|
|
int WINAPI LibMain(HANDLE, WORD, WORD, LPSTR); // init.c
|
|
void PASCAL InitImeUIData(LPIMEL); // init.c
|
|
void PASCAL SetCompLocalData(LPIMEL); // init.c
|
|
|
|
void PASCAL SetUserSetting(
|
|
#if defined(UNIIME)
|
|
LPIMEL,
|
|
#endif
|
|
LPCTSTR, DWORD, LPBYTE, DWORD); // init.c
|
|
|
|
|
|
#if !defined(ROMANIME)
|
|
void PASCAL AddCodeIntoCand(
|
|
#if defined(UNIIME)
|
|
LPIMEL,
|
|
#endif
|
|
LPCANDIDATELIST, UINT); // compose.c
|
|
|
|
DWORD PASCAL ConvertSeqCode2Pattern(
|
|
#if defined(UNIIME)
|
|
LPIMEL,
|
|
#endif
|
|
LPBYTE, LPPRIVCONTEXT); // compose.c
|
|
|
|
void PASCAL CompWord(
|
|
#if defined(UNIIME)
|
|
LPINSTDATAL, LPIMEL,
|
|
#endif
|
|
WORD, HIMC, LPINPUTCONTEXT, LPCOMPOSITIONSTRING,
|
|
LPGUIDELINE, LPPRIVCONTEXT); // compose.c
|
|
|
|
UINT PASCAL Finalize(
|
|
#if defined(UNIIME)
|
|
LPINSTDATAL, LPIMEL,
|
|
#endif
|
|
HIMC, LPINPUTCONTEXT, LPCOMPOSITIONSTRING,
|
|
LPPRIVCONTEXT, BOOL); // compose.c
|
|
|
|
void PASCAL CompEscapeKey(LPINPUTCONTEXT, LPCOMPOSITIONSTRING,
|
|
LPGUIDELINE, LPPRIVCONTEXT); // compose.c
|
|
|
|
|
|
UINT PASCAL PhrasePrediction(
|
|
#if defined(UNIIME)
|
|
LPIMEL,
|
|
#endif
|
|
LPINPUTCONTEXT, LPCOMPOSITIONSTRING,
|
|
LPPRIVCONTEXT); // chcand.c
|
|
|
|
void PASCAL SelectOneCand(
|
|
#if defined(UNIIME)
|
|
LPIMEL,
|
|
#endif
|
|
HIMC, LPINPUTCONTEXT, LPCOMPOSITIONSTRING,
|
|
LPPRIVCONTEXT, LPCANDIDATELIST); // chcand.c
|
|
|
|
void PASCAL CandEscapeKey(LPINPUTCONTEXT, LPPRIVCONTEXT); // chcand.c
|
|
|
|
void PASCAL ChooseCand(
|
|
#if defined(UNIIME)
|
|
LPINSTDATAL, LPIMEL,
|
|
#endif
|
|
WORD, HIMC, LPINPUTCONTEXT, LPCANDIDATEINFO,
|
|
LPPRIVCONTEXT); // chcand.c
|
|
|
|
#if defined(WINAR30) || defined(DAYI)
|
|
void PASCAL SearchSymbol(WORD, HIMC, LPINPUTCONTEXT,
|
|
LPPRIVCONTEXT); // chcand.c
|
|
#endif // defined(WINAR30) || defined(DAYI)
|
|
|
|
#endif // !defined(ROMANIME)
|
|
|
|
|
|
void PASCAL InitGuideLine(LPGUIDELINE); // ddis.c
|
|
void PASCAL InitCompStr(LPCOMPOSITIONSTRING); // ddis.c
|
|
BOOL PASCAL ClearCand(LPINPUTCONTEXT); // ddis.c
|
|
|
|
BOOL PASCAL Select(
|
|
#if defined(UNIIME)
|
|
LPIMEL,
|
|
#endif
|
|
LPINPUTCONTEXT, BOOL); // ddis.c
|
|
|
|
UINT PASCAL TranslateImeMessage(LPTRANSMSGLIST, LPINPUTCONTEXT,
|
|
LPPRIVCONTEXT); // toascii.c
|
|
|
|
void PASCAL GenerateMessage(HIMC, LPINPUTCONTEXT,
|
|
LPPRIVCONTEXT); // notify.c
|
|
|
|
void PASCAL CompCancel(HIMC, LPINPUTCONTEXT); // notify.c
|
|
|
|
|
|
#if !defined(WINIME) && !defined(ROMANIME)
|
|
BOOL PASCAL ReadUsrDicToMem(
|
|
#if defined(UNIIME)
|
|
LPINSTDATAL, LPIMEL,
|
|
#endif
|
|
HANDLE, DWORD, UINT, UINT, UINT, UINT); // dic.c
|
|
|
|
void PASCAL LoadUsrDicFile(LPINSTDATAL, LPIMEL); // dic.c
|
|
#endif
|
|
|
|
#if !defined(ROMANIME)
|
|
BOOL PASCAL LoadPhraseTable(UINT, LPTSTR); // dic.c
|
|
#endif
|
|
|
|
#if !defined(ROMANIME)
|
|
BOOL PASCAL LoadTable(LPINSTDATAL, LPIMEL); // dic.c
|
|
void PASCAL FreeTable(LPINSTDATAL); // dic.c
|
|
|
|
|
|
#if defined(WINAR30)
|
|
void PASCAL SearchQuickKey(LPCANDIDATELIST, LPPRIVCONTEXT); // search.c
|
|
|
|
#if defined(DAYI) || defined(UNIIME)
|
|
void PASCAL SearchPhraseTbl(
|
|
#if defined(UNIIME)
|
|
LPIMEL,
|
|
#endif
|
|
UINT, LPCANDIDATELIST, DWORD dwPattern); // search.c
|
|
#endif
|
|
|
|
#endif
|
|
|
|
void PASCAL SearchTbl(
|
|
#if defined(UNIIME)
|
|
LPIMEL,
|
|
#endif
|
|
UINT, LPCANDIDATELIST, LPPRIVCONTEXT); // search.c
|
|
|
|
void PASCAL SearchUsrDic(
|
|
#if defined(UNIIME)
|
|
LPIMEL,
|
|
#endif
|
|
LPCANDIDATELIST, LPPRIVCONTEXT); // search.c
|
|
|
|
|
|
DWORD PASCAL ReadingToPattern(
|
|
#if defined(UNIIME)
|
|
LPIMEL,
|
|
#endif
|
|
LPCTSTR, LPBYTE, BOOL); // regword.c
|
|
#endif
|
|
|
|
|
|
BOOL PASCAL UsrDicFileName(
|
|
#if defined(UNIIME)
|
|
LPINSTDATAL, LPIMEL,
|
|
#endif
|
|
HWND); // config.c
|
|
|
|
|
|
void PASCAL DrawDragBorder(HWND, LONG, LONG); // uisubs.c
|
|
void PASCAL DrawFrameBorder(HDC, HWND); // uisubs.c
|
|
|
|
void PASCAL ContextMenu(
|
|
#if defined(UNIIME)
|
|
LPINSTDATAL, LPIMEL,
|
|
#endif
|
|
HWND, int, int); // uisubs.c
|
|
|
|
#if 1 // MultiMonitor support
|
|
RECT PASCAL ImeMonitorWorkAreaFromWindow(HWND); // uisubs.c
|
|
RECT PASCAL ImeMonitorWorkAreaFromPoint(POINT); // uisubs.c
|
|
RECT PASCAL ImeMonitorWorkAreaFromRect(LPRECT); // uisubs.c
|
|
#endif
|
|
|
|
#if !defined(ROMANIME)
|
|
HWND PASCAL GetCompWnd(HWND); // compui.c
|
|
|
|
void PASCAL GetNearCaretPosition(
|
|
#if defined (UNIIME)
|
|
LPIMEL,
|
|
#endif
|
|
LPPOINT, UINT, UINT, LPPOINT, LPPOINT, BOOL); // compui.c
|
|
|
|
BOOL PASCAL AdjustCompPosition(
|
|
#if defined (UNIIME)
|
|
LPIMEL,
|
|
#endif
|
|
LPINPUTCONTEXT, LPPOINT, LPPOINT); // compui.c
|
|
|
|
void PASCAL SetCompPosition(
|
|
#if defined (UNIIME)
|
|
LPIMEL,
|
|
#endif
|
|
HWND, LPINPUTCONTEXT); // compui.c
|
|
|
|
void PASCAL SetCompWindow(
|
|
#if defined(UNIIME)
|
|
LPIMEL,
|
|
#endif
|
|
HWND); // compui.c
|
|
|
|
void PASCAL MoveDefaultCompPosition(
|
|
#if defined(UNIIME)
|
|
LPIMEL,
|
|
#endif
|
|
HWND); // compui.c
|
|
|
|
void PASCAL ShowComp(
|
|
#if defined(UNIIME)
|
|
LPIMEL,
|
|
#endif
|
|
HWND, int); // compui.c
|
|
|
|
void PASCAL StartComp(
|
|
#if defined(UNIIME)
|
|
LPINSTDATAL, LPIMEL,
|
|
#endif
|
|
HWND); // compui.c
|
|
|
|
void PASCAL EndComp(
|
|
#if defined(UNIIME)
|
|
LPIMEL,
|
|
#endif
|
|
HWND); // compui.c
|
|
|
|
void PASCAL ChangeCompositionSize(
|
|
#if defined(UNIIME)
|
|
LPIMEL,
|
|
#endif
|
|
HWND); // compui.c
|
|
|
|
|
|
HWND PASCAL GetCandWnd(HWND); // candui.c
|
|
|
|
BOOL PASCAL CalcCandPos(
|
|
#if defined(UNIIME)
|
|
LPIMEL,
|
|
#endif
|
|
LPINPUTCONTEXT, LPPOINT); // candui.c
|
|
|
|
void PASCAL ShowCand(
|
|
#if defined(UNIIME)
|
|
LPIMEL,
|
|
#endif
|
|
HWND, int); // candui.c
|
|
|
|
void PASCAL OpenCand(
|
|
#if defined(UNIIME)
|
|
LPINSTDATAL, LPIMEL,
|
|
#endif
|
|
HWND); // candui.c
|
|
|
|
void PASCAL CloseCand(
|
|
#if defined(UNIIME)
|
|
LPIMEL,
|
|
#endif
|
|
HWND); // candui.c
|
|
|
|
void PASCAL CandPageSize(HWND, BOOL); // candui.c
|
|
|
|
#endif // !defined(ROMANIME)
|
|
|
|
HWND PASCAL GetStatusWnd(HWND); // statusui.c
|
|
|
|
LRESULT PASCAL SetStatusWindowPos(
|
|
#if defined(UNIIME)
|
|
LPIMEL,
|
|
#endif
|
|
HWND); // statusui.c
|
|
|
|
void PASCAL AdjustStatusBoundary(
|
|
#if defined(UNIIME)
|
|
LPIMEL,
|
|
#endif
|
|
LPPOINT); // statusui.c
|
|
|
|
void PASCAL DestroyStatusWindow(HWND); // statusui.c
|
|
|
|
void PASCAL ShowStatus(
|
|
#if defined(UNIIME)
|
|
LPIMEL,
|
|
#endif
|
|
HWND, int); // statusui.c
|
|
|
|
void PASCAL OpenStatus(
|
|
#if defined(UNIIME)
|
|
LPINSTDATAL, LPIMEL,
|
|
#endif
|
|
HWND); // statusui.c
|
|
|
|
void PASCAL SetStatus(
|
|
#if defined(UNIIME)
|
|
LPIMEL,
|
|
#endif
|
|
HWND, LPPOINT); // statusui.c
|
|
|
|
void PASCAL ResourceLocked(
|
|
#if defined(UNIIME)
|
|
LPIMEL,
|
|
#endif
|
|
HWND); // statusui.c
|
|
|
|
void PASCAL PaintStatusWindow(
|
|
#if defined(UNIIME)
|
|
LPINSTDATAL, LPIMEL,
|
|
#endif
|
|
HWND, HDC); // statusui.c
|
|
|
|
|
|
BOOL PASCAL MouseSelectCandPage(
|
|
#if defined(UNIIME)
|
|
LPIMEL,
|
|
#endif
|
|
HWND, WORD); // offcaret.c
|
|
|
|
#endif // !defined(MINIIME)
|
|
|
|
#if !defined(UNIIME)
|
|
|
|
LRESULT CALLBACK UIWndProc(HWND, UINT, WPARAM, LPARAM); // ui.c
|
|
|
|
LRESULT CALLBACK CompWndProc(HWND, UINT, WPARAM, LPARAM); // compui.c
|
|
|
|
LRESULT CALLBACK CandWndProc(HWND, UINT, WPARAM, LPARAM); // candui.c
|
|
|
|
LRESULT CALLBACK StatusWndProc(HWND, UINT, WPARAM, LPARAM); // statusui.c
|
|
|
|
LRESULT CALLBACK OffCaretWndProc(HWND, UINT, WPARAM, LPARAM); // offcaret.c
|
|
|
|
LRESULT CALLBACK ContextMenuWndProc(HWND, UINT, WPARAM,
|
|
LPARAM); // uisubs.c
|
|
|
|
#endif
|