#ifndef _COUNTRY_ME_ #pragma once //#include "KUIControl.h" #include "CInput.h" #include "CEditBoxInfo.h" /// Edit Control class KUIControlEdit; typedef std::map 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