/* ========================================================================== * ÆÄ ÀÏ : EditBox.h * ¸ñ Àû : * ÀÛ ¼º ÀÚ : ±è°¡¶÷ * ÀÛ ¼º ÀÏ : 2006-10-12 * ÁÖÀÇ»çÇ× : *===========================================================================*/ #pragma once #include "UIIMENode.h" #include "UINodeData.h" class cPlaneObject; class cEditBox : public cUIIMENode { public: cEditBox( eUINodeType type = eUINODE_EDITBOX ); virtual ~cEditBox(); /// ¿¡µðÆ®¿¡ Ãâ·ÂÇÒ ¹®ÀÚ¿­ Àû¿ë ( ¿ÜºÎ¿¡¼­ µé¾î¿Â ¹®ÀÚ¿­ ) void SetText( LPCTSTR text, int align = 1 ); void SetTextColor( unsigned long color ); /// copy & paste ±ÇÇÑ Áֱ⠿©ºÎ void SetCopyPaste( bool flag ); /// Àüü ¼±Åà ±â´É void SetAllSelect(); bool IsFocus() const; /// Æ÷Ä¿½º°¡ ÀÖ´ÂÁö ¸®ÅÏ bool IsText() const; /// ¿¡µðÆ® ³»ºÎ¿¡ ÅØ½ºÆ®°¡ ÀÖ´ÂÁö ¸®ÅÏ protected: /// À̺¥Æ® ó¸® virtual bool OnCreate( cUINodeProperty* ); virtual bool HandleEvent( const cUIEvent& event ); virtual void OnProcess( unsigned long deltaTime, unsigned long accumTime ); virtual void OnRender( cUIFontItemKeeper* pKeeper ); virtual void OnMouseMove( const cUIPos& pos ); virtual void OnImeStartComposition( unsigned int wparam, unsigned int lparam ); virtual void OnLButtonDown( const cUIPos& pos, bool ctrl, bool /*AltPress*/, bool /*shiftPress*/ ); virtual void OnLButtonDoubleClick( const cUIPos& pos ); virtual void OnLButtonUp( const cUIPos& pos ); virtual void OnKeyDown( eKeyCode code ); virtual void OnKeyUp( eKeyCode code ); virtual void OnFocusLost(); virtual void OnMouseLeft(const cUIPos& pos ); virtual void OnCaptureLost( const cUIPos& pos ); virtual bool SetSkin( const cUINodeSkin* pskin ); virtual void UpdateRect(); /// ¹®ÀÚ¿­À» ÆÐ½º¿öµåÇüÀ¸·Î ¹ÝȯÇÑ´Ù void ChangePassword(); /// ij·µ º¸ÀÌ´Â ½Ã°£ °è»ê void UpdateCaretTime( unsigned long accumTime ); /// ÅØ½ºÆ® ÁÂÇ¥ ¾÷µ¥ÀÌÆ® void UpdateText(); /// ÅØ½ºÆ® ½ºÅ©·Ñ°ú, ¿¡µðÆ®¿¡ »Ñ·ÁÁö´Â ÅØ½ºÆ® °»½Å void UpdateShowText(); /// µå·¡±ë½Ã ¹éÀ̹ÌÁö À§Ä¡, »çÀÌÁî ¼³Á¤ void UpdateBackImage( const cUIPos& pos ); /// ¿¡µðÆ®»ó¿¡ ¸¶¿ì½º À̺¥Æ®°¡ ÀϾ½Ã, ´­¸°ÁÂÇ¥ÀÇ ±ÛÀÚ À妽º¸¦ ±¸ÇÔ void UpdateMouseMoveInEdit( const cUIPos& pos, int& viewcaret, int& editcaret, bool directionfla ); /// ij·µ °è»ê void RenderCaret(cUIFontItemKeeper* pKeeper); protected: /// ¹®ÀÚ¿­ µå·¡±×½Ã ¹é À̹ÌÁö cPlaneObject* mSelectionImage; /// µå·¡±ë ½ÃÀÛ x ÁÂÇ¥ cUIPos mSelectionStartPos; protected: /// ÅØ½ºÃ³ µðÆúµå ¿µ¿ª cUIRect mOriginalTexRect; /// ¿¡µðÆ® ¹Ú½º¿¡¼­ ±ÛÀÚ Ãâ·Â ½ÃÀÛÀ§Ä¡ cUIPos mEditingPos; /// ¿¡µðÆ®ÀÇ À§Ä¡ int mEditX, mEditY; /// ¿¡µðÆ®ÅÇÀ妽º (ÅÇÀÌ ´­·ÈÀ»½Ã¿¡ Æ÷Ä¿½º¸¦ °¡Áö±â À§ÇÑ ÇÒ´çµÈ ¹øÈ£ ) int mEditTabIndex; /// copy & paste ±ÇÇÑ Áֱ⠿©ºÎ bool mCopyFlag; /// ÅØ½ºÆ® Á¤·Ä int mTextAlign; /// ij·µ ½Ã°£ Ç÷¡±× bool mCaretTimeFlag; /// ij·µ ½Ã°£¿ë unsigned long mLastTick; /// ij·µ Ç÷¡±× bool mShowCaretFlag; /// ½ÇÁ¦·Î ¿¡µðÆ®¿¡ »Ñ·ÁÁö´Â ÅØ½ºÆ® cStringT mShowText; /// ÇöÀç Ãâ·ÂµÇ´Â ¹®ÀÚ¿­ ±æÀÌ int mShowLen; unsigned long mTextColor; }; inline bool cEditBox::IsFocus() const { if( GetFocus() == this ) { return true; } return false; } inline bool cEditBox::IsText() const { if( mTextLength > 0 ) return true; return false; } inline void cEditBox::SetCopyPaste( bool flag ) { mCopyFlag = flag; } inline void cEditBox::SetTextColor( unsigned long color ) { mTextColor = color; } /////////////////////////////////////////////////////////////////////////// class cEditBoxSkin : public cUINodeSkin { public: cEditBoxSkin( eUINodeType type = eUINODE_EDITBOX ); virtual ~cEditBoxSkin(); /// ·Îµù virtual bool Load( cParser& parser ); public: /// ÅØ½ºÆ® cStringT mText; /// ¿¡µðÆ® À§Ä¡ cUIPos mEditPos; /// ÅØ½ºÆ® Á¤·Ä ( 0 : ¿ÞÂÊ, 1 : °¡¿îµ¥ ) int mTextAlign; /// ¿¡µðÆ®¿¡ ¼ö¿ëÇÒ¼ö ÀÖ´Â ÃÖ´ë ±æÀÌ ÁöÁ¤ ( 110À» ³ÑÀ»¼ö ¾øÀ½ ) int mMaxEditLength; /// ¿¡µðÆ® ŸÀÔ unsigned int mEditKind; /// ±ÛÀÚ°¡ Ãâ·ÂµÉ width unsigned int mEditWidth; public: /// ¿¡µðÆ®¹Ú½º µå·¡±× ¿µ¿ª À̹ÌÁö NiTexture* mpSelectionTexture; sSkinInfo* mSelectionSkin; };