#include "KUIDefine.h" #include #define MAX_STRING 1024 /// typedef DWORD HIMC; class KUIIMEObject { public : KUIIMEObject(); ~KUIIMEObject(); /// update bool IsUpdate() { return m_bUpdate; } /// selection void SetSel( int nStart, int nEnd ); void GetSel( int& nStart, int& nEnd ); /// caret pos int GetCaretPos() { return m_nCurCaretPos; } /// forcus void SetFocus( bool bFocus ); bool IsFocus() { return m_bFocus; } void KillFocus(); /// string void SetLimitText( int nLength ); int GetStringLen() { return m_nStringLen; } void SetString( const char* szStr ); char* GetString() { return m_szString; } void ClearBuffer() { ZeroMemory(m_szString, MAX_STRING); m_nStringLen = 0; } /// UTIL bool IsEnglishMode(); void EnableHagulMode(); void EnableEnglishMode(); public : bool WndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam ); private : /// ime enter/leave HIMC Enter(); void Leave(); int IsHangul(char* OutText, int Len); /// for IME Message void OnIMEStartComposition( WPARAM wParam, LPARAM lParam ); void OnIMEComposition( WPARAM wParam, LPARAM lParam ); void OnIMEEndComposition( WPARAM wParam, LPARAM lParam ); void OnIMEChar( WPARAM wParam, LPARAM lParam ); void OnIMEKeyDown( WPARAM wParam, LPARAM lParam ); void OnIMEKeyUp( WPARAM wParam, LPARAM lParam ); void OnBackMove(int Space, int Position = -1); private : HIMC m_hIMC; bool m_bFocus; bool m_bUpdate; // Select int m_nSelectPos; int m_nStart; int m_nEnd; int m_nCurCaretPos; ///< 캐럿 위치 BOOL m_bComp; ///< 한글 조합중인가? // 조합 변수 char m_szComp[4]; ///< 화면에 조합하는 중인 글자 // string 변수 int m_nLength; int m_nStringLen; char m_szString[MAX_STRING]; ///< 실제 입력한 글자 (화면에 보이는 글자) // mode bool m_bIsEnglishMode; ///< 이전의 입력상태를 보관 };