Files
Leviathan/Client/Game/engine/Ui/KUIImeObject.h
T
2026-06-01 12:46:52 +02:00

89 lines
1.9 KiB
C++

#include "KUIDefine.h"
#include <DIMM.h>
#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; ///< 이전의 입력상태를 보관
};