/************************************************* * 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