152 lines
4.4 KiB
C++
152 lines
4.4 KiB
C++
#ifndef _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.07 - 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=true);
|
|
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; }
|
|
// 2010.06.08 - prodongi
|
|
void setEditBoxScroll(bool scroll);
|
|
|
|
/// editcontrol 포커스 초기화 하는 함수 추가. sfreer 2009.04.30
|
|
static void SetInitFocus();
|
|
void SetSpaceLimit(bool bFlag); // 2011. 11. 2 - marine 스페이스 금지 플래그
|
|
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.08 커서를 보이도록 설정한다, 키보드 입력 받을때 사용 - 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;
|
|
|
|
KColor m_Color; ///< MJ 2004/10/05 컬러 추가
|
|
|
|
bool m_bLineChange;
|
|
|
|
KTextPhrase* m_pCandidatePhrase;
|
|
KTextPhrase* 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;
|
|
|
|
};
|
|
|
|
#else
|
|
#include "../Localization/MiddleEast/KUIControlEdit_ME.h"
|
|
#endif
|