//-------------------------------------------------------------------------------------- // File: ImeUi.h // // Copyright (c) Microsoft Corporation. All rights reserved. //-------------------------------------------------------------------------------------- #ifndef _IMEUI_H_ #define _IMEUI_H_ #if _WIN32_WINNT < 0x0400 #error IMEUI requires _WIN32_WINNT to be 0x0400 or higher. Please add "_WIN32_WINNT=0x0400" to your project's preprocessor setting. #endif #include class CImeUiFont_Base { public: virtual void SetHeight( UINT uHeight ) { uHeight; }; // for backward compatibility virtual void SetColor( DWORD color ) = 0; virtual void SetPosition( int x, int y ) = 0; virtual void GetTextExtent( LPCTSTR szText, DWORD* puWidth, DWORD* puHeight ) = 0; virtual void DrawText( LPCTSTR pszText ) = 0; }; typedef struct { // symbol (Henkan-kyu) DWORD symbolColor; DWORD symbolColorOff; DWORD symbolColorText; BYTE symbolHeight; BYTE symbolTranslucence; BYTE symbolPlacement; CImeUiFont_Base* symbolFont; // candidate list DWORD candColorBase; DWORD candColorBorder; DWORD candColorText; // composition string DWORD compColorInput; DWORD compColorTargetConv; DWORD compColorConverted; DWORD compColorTargetNotConv; DWORD compColorInputErr; BYTE compTranslucence; DWORD compColorText; // caret BYTE caretWidth; BYTE caretYMargin; } IMEUI_APPEARANCE; typedef struct // D3DTLVERTEX compatible { float sx; float sy; float sz; float rhw; DWORD color; DWORD specular; float tu; float tv; } IMEUI_VERTEX; // IME States #define IMEUI_STATE_OFF 0 #define IMEUI_STATE_ON 1 #define IMEUI_STATE_ENGLISH 2 // IME const #define MAX_CANDLIST 10 // IME Flags #define IMEUI_FLAG_SUPPORT_CARET 0x00000001 bool ImeUi_Initialize( HWND hwnd, bool bDisable = false ); void ImeUi_Uninitialize(); void ImeUi_SetAppearance( const IMEUI_APPEARANCE* pia ); void ImeUi_GetAppearance( IMEUI_APPEARANCE* pia ); bool ImeUi_IgnoreHotKey( const MSG* pmsg ); LPARAM ImeUi_ProcessMessage( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM& lParam, bool* trapped ); void ImeUi_SetScreenDimension( UINT width, UINT height ); void ImeUi_RenderUI( bool bDrawCompAttr = true, bool bDrawOtherUi = true ); void ImeUi_SetCaretPosition( UINT x, UINT y ); void ImeUi_SetCompStringAppearance( CImeUiFont_Base* pFont, DWORD color, const RECT* prc ); bool ImeUi_GetCaretStatus(); void ImeUi_SetInsertMode( bool bInsert ); void ImeUi_SetState( DWORD dwState ); DWORD ImeUi_GetState(); void ImeUi_EnableIme( bool bEnable ); bool ImeUi_IsEnabled( void ); void ImeUi_FinalizeString( bool bSend = false ); void ImeUi_ToggleLanguageBar( BOOL bRestore ); bool ImeUi_IsSendingKeyMessage(); void ImeUi_SetWindow( HWND hwnd ); UINT ImeUi_GetInputCodePage(); DWORD ImeUi_GetFlags(); void ImeUi_SetFlags( DWORD dwFlags, bool bSet ); WORD ImeUi_GetPrimaryLanguage(); DWORD ImeUi_GetImeId( UINT uIndex ); WORD ImeUi_GetLanguage(); LPTSTR ImeUi_GetIndicatior(); bool ImeUi_IsShowReadingWindow(); bool ImeUi_IsShowCandListWindow(); bool ImeUi_IsVerticalCand(); bool ImeUi_IsHorizontalReading(); TCHAR* ImeUi_GetCandidate( UINT idx ); TCHAR* ImeUi_GetCompositionString(); DWORD ImeUi_GetCandidateSelection(); DWORD ImeUi_GetCandidateCount(); BYTE* ImeUi_GetCompStringAttr(); DWORD ImeUi_GetImeCursorChars(); extern void ( CALLBACK*ImeUiCallback_DrawRect )( int x1, int y1, int x2, int y2, DWORD color ); extern void* ( __cdecl*ImeUiCallback_Malloc )( size_t bytes ); extern void ( __cdecl*ImeUiCallback_Free )( void* ptr ); extern void ( CALLBACK*ImeUiCallback_DrawFans )( const IMEUI_VERTEX* paVertex, UINT uNum ); extern void ( CALLBACK*ImeUiCallback_OnChar )( WCHAR wc ); #endif //_IMEUI_H_