| /* |
| * private header for implementing IMM. |
| * |
| * Copyright 2000 Hidenori Takeshima |
| */ |
| |
| typedef struct IMM32_tagTHREADDATA IMM32_THREADDATA; |
| |
| struct IMM32_tagTHREADDATA |
| { |
| HWND hwndIME; |
| HIMC hIMC; |
| }; |
| |
| typedef struct IMM32_tagMOVEABLEMEM IMM32_MOVEABLEMEM; |
| |
| /* IME APIs */ |
| |
| typedef BOOL WINAPI (*IMM32_pImeInquireA)(LPIMEINFO, LPSTR, LPCSTR); |
| typedef BOOL WINAPI (*IMM32_pImeInquireW)(LPIMEINFO, LPWSTR, LPCWSTR); |
| |
| typedef BOOL WINAPI (*IMM32_pImeConfigureA)(HKL, HWND, DWORD, LPVOID); |
| typedef BOOL WINAPI (*IMM32_pImeConfigureW)(HKL, HWND, DWORD, LPVOID); |
| typedef DWORD WINAPI (*IMM32_pImeConversionListA) |
| (HIMC, LPCSTR, LPCANDIDATELIST, DWORD, UINT); |
| typedef DWORD WINAPI (*IMM32_pImeConversionListW) |
| (HIMC, LPCWSTR, LPCANDIDATELIST, DWORD, UINT); |
| typedef BOOL WINAPI (*IMM32_pImeDestroy)(UINT); |
| typedef UINT WINAPI (*IMM32_pImeEnumRegisterWordA) |
| (REGISTERWORDENUMPROCA, LPCSTR, DWORD, LPCSTR, LPVOID); |
| typedef UINT WINAPI (*IMM32_pImeEnumRegisterWordW) |
| (REGISTERWORDENUMPROCW, LPCWSTR, DWORD, LPCWSTR, LPVOID); |
| typedef UINT WINAPI (*IMM32_pImeGetRegisterWordStyleA)(UINT, LPSTYLEBUFA); |
| typedef UINT WINAPI (*IMM32_pImeGetRegisterWordStyleW)(UINT, LPSTYLEBUFW); |
| typedef LRESULT WINAPI (*IMM32_pImeEscapeA)(HIMC, UINT, LPVOID); |
| typedef LRESULT WINAPI (*IMM32_pImeEscapeW)(HIMC, UINT, LPVOID); |
| typedef BOOL WINAPI (*IMM32_pImeProcessKey)(HIMC, UINT, LPARAM, CONST LPBYTE); |
| typedef BOOL WINAPI (*IMM32_pImeRegisterWordA)(LPCSTR, DWORD, LPCSTR); |
| typedef BOOL WINAPI (*IMM32_pImeRegisterWordW)(LPCWSTR, DWORD, LPCWSTR); |
| typedef BOOL WINAPI (*IMM32_pImeSelect)(HIMC, BOOL); |
| typedef BOOL WINAPI (*IMM32_pImeSetActiveContext)(HIMC, BOOL); |
| typedef BOOL WINAPI (*IMM32_pImeSetCompositionStringA) |
| (HIMC, DWORD, LPCVOID, DWORD, LPCVOID, DWORD); |
| typedef BOOL WINAPI (*IMM32_pImeSetCompositionStringW) |
| (HIMC, DWORD, LPCVOID, DWORD, LPCVOID, DWORD); |
| typedef UINT WINAPI (*IMM32_pImeToAsciiEx) |
| (UINT, UINT, CONST LPBYTE, LPDWORD, UINT, HIMC); |
| typedef BOOL WINAPI (*IMM32_pImeUnregisterWordA)(LPCSTR, DWORD, LPCSTR); |
| typedef BOOL WINAPI (*IMM32_pImeUnregisterWordW)(LPCWSTR, DWORD, LPCWSTR); |
| typedef BOOL WINAPI (*IMM32_pNotifyIME)(HIMC, DWORD, DWORD, DWORD); |
| |
| /* for Win98 and later */ |
| typedef DWORD WINAPI (*IMM32_pImeGetImeMenuItemsA) |
| (HIMC, DWORD, DWORD, LPIMEMENUITEMINFOA, LPIMEMENUITEMINFOA, DWORD); |
| typedef DWORD WINAPI (*IMM32_pImeGetImeMenuItemsW) |
| (HIMC, DWORD, DWORD, LPIMEMENUITEMINFOW, LPIMEMENUITEMINFOW, DWORD); |
| |
| struct IMM32_IME_EXPORTED_HANDLERS |
| { |
| union |
| { |
| IMM32_pImeInquireA A; |
| IMM32_pImeInquireW W; |
| } pImeInquire; |
| |
| union |
| { |
| IMM32_pImeConfigureA A; |
| IMM32_pImeConfigureW W; |
| } pImeConfigure; |
| union |
| { |
| IMM32_pImeConversionListA A; |
| IMM32_pImeConversionListW W; |
| } pImeConversionList; |
| IMM32_pImeDestroy pImeDestroy; |
| union |
| { |
| IMM32_pImeEnumRegisterWordA A; |
| IMM32_pImeEnumRegisterWordW W; |
| } pImeEnumRegisterWord; |
| union |
| { |
| IMM32_pImeGetRegisterWordStyleA A; |
| IMM32_pImeGetRegisterWordStyleW W; |
| } pImeGetRegisterWordStyle; |
| union |
| { |
| IMM32_pImeEscapeA A; |
| IMM32_pImeEscapeW W; |
| } pImeEscape; |
| IMM32_pImeProcessKey pImeProcessKey; |
| union |
| { |
| IMM32_pImeRegisterWordA A; |
| IMM32_pImeRegisterWordW W; |
| } pImeRegisterWord; |
| IMM32_pImeSelect pImeSelect; |
| IMM32_pImeSetActiveContext pImeSetActiveContext; |
| union |
| { |
| IMM32_pImeSetCompositionStringA A; |
| IMM32_pImeSetCompositionStringW W; |
| } pImeSetCompositionString; |
| IMM32_pImeToAsciiEx pImeToAsciiEx; |
| union |
| { |
| IMM32_pImeUnregisterWordA A; |
| IMM32_pImeUnregisterWordW W; |
| } pImeUnregisterWord; |
| IMM32_pNotifyIME pNotifyIME; |
| |
| /* for Win98 and later */ |
| union |
| { |
| IMM32_pImeGetImeMenuItemsA A; |
| IMM32_pImeGetImeMenuItemsW W; |
| } pImeGetImeMenuItems; |
| }; |
| |
| typedef struct IMM32_tagIMEKL IMM32_IMEKL; |
| typedef struct IMM32_tagIMC IMM32_IMC; |
| |
| /* Win9x DDK says the UI class name can be up to 16 TCHARs. */ |
| #define IMM32_UICLASSNAME_MAX 16 |
| |
| struct IMM32_tagIMEKL |
| { |
| IMM32_IMEKL* pNext; |
| HKL hkl; |
| BOOL fUnicode; |
| HINSTANCE hInstIME; |
| LPSTR pszIMEFileName; |
| IMEINFO imeinfo; |
| struct IMM32_IME_EXPORTED_HANDLERS handlers; |
| union |
| { |
| CHAR A[IMM32_UICLASSNAME_MAX]; |
| WCHAR W[IMM32_UICLASSNAME_MAX]; |
| } UIClassName; |
| }; |
| |
| struct IMM32_tagIMC |
| { |
| INPUTCONTEXT context; |
| const IMM32_IMEKL* pkl; |
| BOOL fSelected; |
| }; |
| |
| |
| |
| |
| |
| /* main.c */ |
| LPVOID IMM32_HeapAlloc( DWORD dwFlags, DWORD dwSize ); |
| LPVOID IMM32_HeapReAlloc( DWORD dwFlags, LPVOID lpv, DWORD dwSize ); |
| void IMM32_HeapFree( LPVOID lpv ); |
| IMM32_THREADDATA* IMM32_GetThreadData( void ); |
| HIMC IMM32_GetDefaultContext( void ); |
| HWND IMM32_GetDefaultIMEWnd( void ); |
| void IMM32_Lock( void ); |
| void IMM32_Unlock( void ); |
| |
| /* memory.c */ |
| IMM32_MOVEABLEMEM* IMM32_MoveableAlloc( DWORD dwHeapFlags, DWORD dwHeapSize ); |
| void IMM32_MoveableFree( IMM32_MOVEABLEMEM* lpMoveable ); |
| BOOL IMM32_MoveableReAlloc( IMM32_MOVEABLEMEM* lpMoveable, |
| DWORD dwHeapFlags, DWORD dwHeapSize ); |
| LPVOID IMM32_MoveableLock( IMM32_MOVEABLEMEM* lpMoveable ); |
| BOOL IMM32_MoveableUnlock( IMM32_MOVEABLEMEM* lpMoveable ); |
| DWORD IMM32_MoveableGetLockCount( IMM32_MOVEABLEMEM* lpMoveable ); |
| DWORD IMM32_MoveableGetSize( IMM32_MOVEABLEMEM* lpMoveable ); |
| |
| /* string.c */ |
| INT IMM32_strlenAtoW( LPCSTR lpstr ); |
| INT IMM32_strlenWtoA( LPCWSTR lpwstr ); |
| LPWSTR IMM32_strncpyAtoW( LPWSTR lpwstr, LPCSTR lpstr, INT wbuflen ); |
| LPSTR IMM32_strncpyWtoA( LPSTR lpstr, LPCWSTR lpwstr, INT abuflen ); |
| LPWSTR IMM32_strdupAtoW( LPCSTR lpstr ); |
| LPSTR IMM32_strdupWtoA( LPCWSTR lpwstr ); |
| |
| /* imewnd.c */ |
| BOOL IMM32_RegisterIMEWndClass( HINSTANCE hInstDLL ); |
| void IMM32_UnregisterIMEWndClass( HINSTANCE hInstDLL ); |
| HWND IMM32_CreateDefaultIMEWnd( void ); |
| |
| /* imekl.c */ |
| const IMM32_IMEKL* IMM32_GetIME( HKL hkl ); |
| void IMM32_UnloadAllIMEs( void ); |
| |
| /* imc.c */ |
| IMM32_IMC* IMM32_LockIMC( HIMC hIMC ); |
| BOOL IMM32_UnlockIMC( HIMC hIMC ); |
| |
| |