240 lines
7 KiB
C
240 lines
7 KiB
C
|
// 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__
|