|
|
// tedit.h : interface of the CTedit class
//
// This class takes text entry from the user.
// It is derived from the CEdit class
//
#ifndef __TEDIT_H__
#define __TEDIT_H__
// default position for text box
#define INITX 10
#define INITY 10
#define INITCX 100
#define INITCY 50
#define MIN_CHARS_DISPLAY_SIZE 5 // minimum size is 5 chars with the default font
#define WM_MOVING 0x0216
//#define EM_POSFROMCHAR 0x00D6
//#define EM_CHARFROMPOS 0x00D7
#define IS_DBCS_CHARSET( charset ) ( (charset == GB2312_CHARSET) || \
(charset == SHIFTJIS_CHARSET) || \ (charset == HANGEUL_CHARSET) || \ (charset == CHINESEBIG5_CHARSET) )
class CTedit; class CTfont;
typedef enum { eEBOX_CHANGE, eFONT_CHANGE, eSIZE_MOVE_CHANGE, eNO_CHANGE } eLASTACTION;
/******************************************************************************/
class CAttrEdit : public CEdit { public:
BOOL m_bBackgroundTransparent;
UINT m_uiLastChar[2];
CRect m_rectUpdate;
CTedit* m_pParentWnd;
CString m_strResult;
HKL m_hKL; BOOL m_bMouseDown; HCURSOR m_hHCursor; HCURSOR m_hVCursor; HCURSOR m_hOldCursor; CRect m_rectFmt; int m_iPrevStart; int m_iTabPos; BOOL m_bResizeOnly; // when IME composition will
// force a resize
CAttrEdit::CAttrEdit();
DECLARE_DYNCREATE( CAttrEdit )
protected: // create from serialization only
//{{AFX_MSG(CAttrEdit)
afx_msg void OnPaint(); afx_msg BOOL OnEraseBkgnd ( CDC* pDC ); afx_msg void OnRButtonDown(UINT nFlags, CPoint point); afx_msg void OnChar (UINT nChar, UINT nRepCnt, UINT nFlags);
afx_msg LRESULT OnImeChar ( WPARAM wParam, LPARAM lParam ); afx_msg LRESULT OnImeComposition ( WPARAM wParam, LPARAM lParam ); afx_msg LRESULT OnInputLangChange ( WPARAM wParam, LPARAM lParam ); afx_msg void OnKillFocus ( CWnd* pNewWnd ); afx_msg UINT OnNcHitTest ( CPoint point ); afx_msg void OnSetFocus ( CWnd* pOldWnd ); afx_msg void OnSize ( UINT nType, int cx, int cy ); afx_msg void OnLButtonDblClk ( UINT nFlags, CPoint point ); afx_msg void OnLButtonDown ( UINT nFlags, CPoint point ); afx_msg void OnMouseMove ( UINT nFlags, CPoint point ); afx_msg void OnLButtonUp ( UINT nFlags, CPoint point ); afx_msg void OnKeyDown ( UINT nChar, UINT nRepCnt, UINT nFlags); afx_msg LRESULT OnSysTimer ( WPARAM wParam, LPARAM lParam );
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
void SetHCursorShape ( void ); void SetVCursorShape ( void ); void UpdateSel ( void ); void UpdateInput ( void ); void SetStartSelect ( void ); void SetCaretPosition ( BOOL bPrev, CPoint *ptMouse, int iPrevStart ); void SetCaretShape ( void ); void SetFmtRect ( void ); void Repaint ( void ); void TabTextOut ( CDC *pDC, int nCharIndex, int x, int y, LPCTSTR lpStr, int nCount, BOOL bSelect );
friend class CTedit; };
/******************************************************************************/
class CTedit : public CWnd { friend class CTfont; private:
CAttrEdit m_cEdit; CTfont* m_pcTfont; eLASTACTION m_eLastAction; BOOL m_bBackgroundTransparent; BOOL m_bCleanupBKBrush; BOOL m_bStarting; BOOL m_bPasting; BOOL m_bExpand; BOOL m_bChanged; UINT m_uiHitArea; COLORREF m_crFGColor; COLORREF m_crBKColor; CRect m_cRectOldPos; CRect m_cRectWindow; CSize m_SizeMinimum;
public:
CImgWnd* m_pImgWnd; CBrush m_hbrBkColor; BOOL m_bRefresh;
int m_iLineHeight; BOOL m_bVertEdit; BOOL m_bAssocIMC; HIMC m_hIMCEdit; HIMC m_hIMCFace; HIMC m_hIMCSize; HWND m_hWndFace; HWND m_hWndSize;
CTedit::CTedit(); DECLARE_DYNCREATE( CTedit ) afx_msg void OnEnMaxText(); protected:
//{{AFX_MSG(CTedit)
afx_msg void OnAttrEditEnChange(void); afx_msg void OnSize( UINT nType, int cx, int cy ); afx_msg void OnMove( int x, int y ); afx_msg void OnGetMinMaxInfo( MINMAXINFO FAR* lpMMI ); afx_msg HBRUSH OnCtlColor( CDC* pDC, CWnd* pWnd, UINT nCtlColor ); afx_msg void OnNcCalcSize( BOOL bCalcValidRects, NCCALCSIZE_PARAMS FAR* lpncsp ); afx_msg void OnNcPaint(); afx_msg UINT OnNcHitTest( CPoint point ); afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
afx_msg void OnTextPlain(); afx_msg void OnTextBold(); afx_msg void OnTextItalic(); afx_msg void OnTextUnderline(); afx_msg void OnTextSelectfont(); afx_msg void OnTextSelectpointsize(); afx_msg void OnEditCut(); afx_msg void OnEditCopy(); afx_msg void OnEditPaste(); afx_msg void OnTextDelete(); afx_msg void OnTextSelectall(); afx_msg void OnTextUndo(); afx_msg void OnTextPlace(); afx_msg void OnTextTexttool(); afx_msg void OnUpdateTextPlain(CMenu *pcMenu); afx_msg void OnUpdateTextBold(CMenu *pcMenu); afx_msg void OnUpdateTextItalic(CMenu *pcMenu); afx_msg void OnUpdateTextUnderline(CMenu *pcMenu); afx_msg void OnUpdateTextTexttool(CMenu *pcMenu);
afx_msg void OnDestroy();
//}}AFX_MSG
afx_msg void OnEnUpdate();
afx_msg LRESULT OnMoving( WPARAM, LPARAM lprc );
DECLARE_MESSAGE_MAP()
virtual void PostNcDestroy();
CSize GetDefaultMinSize( void );
public:
virtual CTedit::~CTedit();
virtual BOOL PreCreateWindow( CREATESTRUCT& cs );
BOOL Create( CImgWnd* pParentWnd, COLORREF crefForeground, COLORREF crefBackground, CRect& rectTextPos, BOOL bBackTransparent = TRUE );
void OnAttrEditFontChange( void ); void RefreshWindow ( CRect* prect = NULL, BOOL bErase = TRUE ); void SetTextColor ( COLORREF crColor ); void SetBackColor ( COLORREF crColor ); void SetTransparentMode ( BOOL bTransparent ); void Undo (); void ShowFontPalette ( int nCmdShow ); BOOL IsFontPaletteVisible( void ); void ShowFontToolbar ( BOOL bActivate = FALSE ); void HideFontToolbar ( void ); BOOL IsModified ( void ) { return m_bChanged; } void GetBitmap ( CDC* pDC, CRect* prectImg ); CAttrEdit* GetEditWindow ( void ) { return &m_cEdit; }
HIMC DisableIme( HWND hWnd ); void EnableIme( HWND hWnd, HIMC hIMC ); BOOL IsCUAS();
};
#endif // __TEDIT_H__
|