123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197 |
- #ifndef __UIRICHEDIT_H__
- #define __UIRICHEDIT_H__
- #pragma once
- namespace DuiLib {
- class CTxtWinHost;
- class UILIB_API CRichEditUI : public CContainerUI, public IMessageFilterUI
- {
- DECLARE_DUICONTROL(CRichEditUI)
- public:
- CRichEditUI();
- ~CRichEditUI();
- LPCTSTR GetClass() const;
- LPVOID GetInterface(LPCTSTR pstrName);
- UINT GetControlFlags() const;
- void SetEnabled(bool bEnabled);
- bool IsMultiLine();
- void SetMultiLine(bool bMultiLine);
- bool IsWantTab();
- void SetWantTab(bool bWantTab = true);
- bool IsWantReturn();
- void SetWantReturn(bool bWantReturn = true);
- bool IsWantCtrlReturn();
- void SetWantCtrlReturn(bool bWantCtrlReturn = true);
- bool IsTransparent();
- void SetTransparent(bool bTransparent = true);
- bool IsRich();
- void SetRich(bool bRich = true);
- bool IsReadOnly();
- void SetReadOnly(bool bReadOnly = true);
- bool IsWordWrap();
- void SetWordWrap(bool bWordWrap = true);
- int GetFont();
- void SetFont(int index);
- void SetFont(LPCTSTR pStrFontName, int nSize, bool bBold, bool bUnderline, bool bItalic);
- LONG GetWinStyle();
- void SetWinStyle(LONG lStyle);
- DWORD GetTextColor();
- void SetTextColor(DWORD dwTextColor);
- int GetLimitText();
- void SetLimitText(int iChars);
- long GetTextLength(DWORD dwFlags = GTL_DEFAULT) const;
- CDuiString GetText() const;
- void SetText(LPCTSTR pstrText);
- bool IsModify() const;
- void SetModify(bool bModified = true) const;
- void GetSel(CHARRANGE &cr) const;
- void GetSel(long& nStartChar, long& nEndChar) const;
- int SetSel(CHARRANGE &cr);
- int SetSel(long nStartChar, long nEndChar);
- void ReplaceSel(LPCTSTR lpszNewText, bool bCanUndo);
- void ReplaceSelW(LPCWSTR lpszNewText, bool bCanUndo = false);
- CDuiString GetSelText() const;
- int SetSelAll();
- int SetSelNone();
- WORD GetSelectionType() const;
- bool GetZoom(int& nNum, int& nDen) const;
- bool SetZoom(int nNum, int nDen);
- bool SetZoomOff();
- bool GetAutoURLDetect() const;
- bool SetAutoURLDetect(bool bAutoDetect = true);
- DWORD GetEventMask() const;
- DWORD SetEventMask(DWORD dwEventMask);
- CDuiString GetTextRange(long nStartChar, long nEndChar) const;
- void HideSelection(bool bHide = true, bool bChangeStyle = false);
- void ScrollCaret();
- int InsertText(long nInsertAfterChar, LPCTSTR lpstrText, bool bCanUndo = false);
- int AppendText(LPCTSTR lpstrText, bool bCanUndo = false);
- DWORD GetDefaultCharFormat(CHARFORMAT2 &cf) const;
- bool SetDefaultCharFormat(CHARFORMAT2 &cf);
- DWORD GetSelectionCharFormat(CHARFORMAT2 &cf) const;
- bool SetSelectionCharFormat(CHARFORMAT2 &cf);
- bool SetWordCharFormat(CHARFORMAT2 &cf);
- DWORD GetParaFormat(PARAFORMAT2 &pf) const;
- bool SetParaFormat(PARAFORMAT2 &pf);
- bool CanUndo();
- bool CanRedo();
- bool CanPaste();
- bool Redo();
- bool Undo();
- void Clear();
- void Copy();
- void Cut();
- void Paste();
- int GetLineCount() const;
- CDuiString GetLine(int nIndex, int nMaxLength) const;
- int LineIndex(int nLine = -1) const;
- int LineLength(int nLine = -1) const;
- bool LineScroll(int nLines, int nChars = 0);
- CDuiPoint GetCharPos(long lChar) const;
- long LineFromChar(long nIndex) const;
- CDuiPoint PosFromChar(UINT nChar) const;
- int CharFromPos(CDuiPoint pt) const;
- void EmptyUndoBuffer();
- UINT SetUndoLimit(UINT nLimit);
- long StreamIn(int nFormat, EDITSTREAM &es);
- long StreamOut(int nFormat, EDITSTREAM &es);
- void SetAccumulateDBCMode(bool bDBCMode);
- bool IsAccumulateDBCMode();
- RECT GetTextPadding() const;
- void SetTextPadding(RECT rc);
- LPCTSTR GetNormalImage();
- void SetNormalImage(LPCTSTR pStrImage);
- LPCTSTR GetHotImage();
- void SetHotImage(LPCTSTR pStrImage);
- LPCTSTR GetFocusedImage();
- void SetFocusedImage(LPCTSTR pStrImage);
- LPCTSTR GetDisabledImage();
- void SetDisabledImage(LPCTSTR pStrImage);
- void PaintStatusImage(HDC hDC);
- void SetTipValue(LPCTSTR pStrTipValue);
- LPCTSTR GetTipValue();
- void SetTipValueColor(LPCTSTR pStrColor);
- DWORD GetTipValueColor();
- void SetTipValueAlign(UINT uAlign);
- UINT GetTipValueAlign();
- void DoInit();
- bool SetDropAcceptFile(bool bAccept);
- // 注意:TxSendMessage和SendMessage是有区别的,TxSendMessage没有multibyte和unicode自动转换的功能,
- // 而richedit2.0内部是以unicode实现的,在multibyte程序中,必须自己处理unicode到multibyte的转换
- virtual HRESULT TxSendMessage(UINT msg, WPARAM wparam, LPARAM lparam, LRESULT *plresult) const;
- IDropTarget* GetTxDropTarget();
- virtual bool OnTxViewChanged();
- virtual void OnTxNotify(DWORD iNotify, void *pv);
- CDuiSize GetNaturalSize(LONG width, LONG height);
- void SetScrollPos(SIZE szPos, bool bMsg = true);
- void LineUp();
- void LineDown();
- void PageUp();
- void PageDown();
- void HomeUp();
- void EndDown();
- void LineLeft();
- void LineRight();
- void PageLeft();
- void PageRight();
- void HomeLeft();
- void EndRight();
- SIZE EstimateSize(SIZE szAvailable);
- void SetPos(RECT rc, bool bNeedInvalidate = true);
- void Move(SIZE szOffset, bool bNeedInvalidate = true);
- void DoEvent(TEventUI& event);
- bool DoPaint(HDC hDC, const RECT& rcPaint, CControlUI* pStopControl);
- void SetAttribute(LPCTSTR pstrName, LPCTSTR pstrValue);
- LRESULT MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, bool& bHandled);
- protected:
- enum {
- DEFAULT_TIMERID = 20,
- };
- CTxtWinHost* m_pTwh;
- bool m_bVScrollBarFixing;
- bool m_bWantTab;
- bool m_bWantReturn;
- bool m_bWantCtrlReturn;
- bool m_bTransparent;
- bool m_bRich;
- bool m_bReadOnly;
- bool m_bWordWrap;
- DWORD m_dwTextColor;
- int m_iFont;
- int m_iLimitText;
- LONG m_lTwhStyle;
- bool m_bDrawCaret;
- bool m_bInited;
- bool m_fAccumulateDBC ; // TRUE - need to cumulate ytes from 2 WM_CHAR msgs
- // we are in this mode when we receive VK_PROCESSKEY
- UINT m_chLeadByte; // use when we are in _fAccumulateDBC mode
- RECT m_rcTextPadding;
- UINT m_uButtonState;
- CDuiString m_sNormalImage;
- CDuiString m_sHotImage;
- CDuiString m_sFocusedImage;
- CDuiString m_sDisabledImage;
- CDuiString m_sTipValue;
- DWORD m_dwTipValueColor;
- UINT m_uTipValueAlign;
- };
- } // namespace DuiLib
- #endif // __UIRICHEDIT_H__
|