Files
Leviathan/Client/Game/game/Localization/MiddleEast/KUIControlEdit_ME.h
T
2026-06-01 12:46:52 +02:00

148 lines
4.3 KiB
C++

#ifdef _COUNTRY_ME_
#pragma once
//#include "KUIControl.h"
#include "CInput.h"
#include "CEditBoxInfo.h"
// Edit Control
class KUIControlEdit;
typedef std::map<HWND, KUIControlEdit *> HandleMap;
class KUIControlEdit : public KUIControl
{
public:
enum
{
KEDIT_SYSKEY_END = 0,
};
KUIControlEdit();
virtual ~KUIControlEdit();
virtual void Create(KUIWND_CREATE_ARG& CREATE_ARG);
virtual void Render(KViewportObject * pViewport, bool isFront = false );
virtual void Process(DWORD dwTime);
virtual DWORD OnKeyMessage(DWORD dwMessage, DWORD dwKeyCode);
virtual LONG OnIMEMessage( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam );
virtual DWORD OnMouseMessage( DWORD dwMessage, int x, int y );
virtual void OnFocusNotify();
virtual void OnPosChangeNofity(int XOffset, int YOffset);
virtual LONG OnMessage( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam );
static bool IsFocusEdit() { return m_FocusedEdit; } // 2012. 7. 5 - marine
static void setFocusFlag(bool bFlag) { m_FocusedEdit = bFlag; }
// Called when System Key is down
void OnSysKey(DWORD dwKeyCode);
LPCSTR GetText();
void SetText(LPCSTR lpszText);
void SetFont(LPCSTR lpszFontName); // [sonador]
// 2010.06.24 - prodongi
//void SetFontSize(int nSize) { m_nFontSize = nSize; }
void SetFontSize(int nSize);
void SetCaretEnable(bool bEnable, DWORD dwTwikleTime) { m_bCaretEnable = bEnable; }
void SetTagEnable(bool bEnable) { m_bTagEnable = bEnable; }
void SetLimitation(int nLimitation, bool bBufferLimit=false);
void SetPassword(bool bEnable) { m_bPassword = bEnable; }
void SetPrefixString(LPCSTR lpszPrefix);
void SetOnlyNumber(bool bEnable);
//ReSize 가 이상한 짓을 해서 생성;;;
void SetReSize( const KRect &rcNewRect );
void SetLineChange( bool bEnable ) { m_bLineChange = bEnable; }
static bool IsNobodyHasFocus() { return (NULL == s_hWndCurrentFocus); }
static void PostWndMsgToFocusEdit( UINT uMsg, WPARAM wParam, LPARAM lParam );
bool IsCandidate() { return m_EditboxInfo.IsCandidate(); }
/// 2012.02.16 - prodongi
bool isEndComposing() const { return m_EditboxInfo.isEndComposing(); }
// MJ 2004/10/05 컬러 추가
void SetFontColor( KColor color ) { m_Color = color; m_bUpdateFlag = true; }
static void SetInitFocus(); // editcontrol 포커스 초기화 하는 함수 추가. sfreer 2009.04.30
// 2010.06.08 - prodongi
void setEditBoxScroll(bool scroll);
// 2011. 11. 2 - marine 스페이스 금지 플래그 설정
void SetSpaceLimit(bool bFlag);
void SetPasteLimit(bool bFlag); // 2011. 11. 3 - marine 붙여넣기 금지 플래그
bool isPasteLimit(){return m_bPasteLimit;}
CEditBoxInfo m_EditboxInfo;
void setGhostText(LPCSTR text, LPCSTR color = "<#959595>"); /// 2011.10.13 미리 입력되어 있는 텍스트 - prodongi
bool isGhostText() const { return m_isGhostText; }
protected:
enum
{
KEDIT_XSIZE_GAP = 8,
};
virtual void _destroyControl();
virtual void _initControl();
bool RegisterKUIEditClass();
static LRESULT CALLBACK EditBoxProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam );
static HandleMap m_mapEditControl;
static DWORD m_dwSysKey[];
static HWND s_hWndCurrentFocus;
void _initPhrase();
void _OpenIME();
void _CloseIME();
void _CreateEditWindow();
void _UpdateEditText();
void _DrawReadingCandidate();
int _CreateEditTextBuffer(wchar_t * buffer,int buff_size);
// 2010.06.24 커서를 보이도록 설정한다, 키보드 입력 받을때 사용 - prodongi
void setUnActivateBlinkCursor();
void cancelGhostText(); /// 2011.10.13 - prodongi
void setTextOriginal(LPCSTR lpszText);
HWND m_hWnd;
WNDPROC m_oldProc;
std::string m_strFontTag; // [sonador]
int m_nFontSize;
int m_nCarretPos;
bool m_bCaretEnable;
bool m_bTagEnable;
bool m_bPassword;
//bool m_bOnlyNumber;
int m_nShowChar;
std::string m_sPrefixString;
std::string m_sPhraseText;
DWORD m_dwConv;
DWORD m_dwSentence;
DWORD m_dwLastCursorRenderTime;
bool m_bOpenFlag;
bool m_bUpdateFlag;
// MJ 2004/10/05 컬러 추가
KColor m_Color;
bool m_bLineChange;
KTextLayout2* m_pCandidatePhrase;
KTextLayout2* m_pReadingPhrase;
CInput m_IMEInput;
bool m_bCursorBlink;
bool m_isGhostText; /// 2011.10.13 선 입력 상태인지 - prodongi
std::string m_ghostTextColor;
bool m_bPasteLimit;
private:
static bool m_FocusedEdit;
};
#endif