]>
git.saurik.com Git - wxWidgets.git/blob - include/wx/msw/textctrl.h
   1 ///////////////////////////////////////////////////////////////////////////// 
   2 // Name:        wx/msw/textctrl.h 
   3 // Purpose:     wxTextCtrl class 
   4 // Author:      Julian Smart 
   8 // Copyright:   (c) Julian Smart 
   9 // Licence:     wxWindows licence 
  10 ///////////////////////////////////////////////////////////////////////////// 
  12 #ifndef _WX_TEXTCTRL_H_ 
  13 #define _WX_TEXTCTRL_H_ 
  16     #pragma interface "textctrl.h" 
  19 class WXDLLEXPORT wxTextCtrl 
: public wxTextCtrlBase
 
  25     wxTextCtrl() { Init(); } 
  26     wxTextCtrl(wxWindow 
*parent
, wxWindowID id
, 
  27                const wxString
& value 
= wxEmptyString
, 
  28                const wxPoint
& pos 
= wxDefaultPosition
, 
  29                const wxSize
& size 
= wxDefaultSize
, 
  31                const wxValidator
& validator 
= wxDefaultValidator
, 
  32                const wxString
& name 
= wxTextCtrlNameStr
) 
  36         Create(parent
, id
, value
, pos
, size
, style
, validator
, name
); 
  40     bool Create(wxWindow 
*parent
, wxWindowID id
, 
  41                 const wxString
& value 
= wxEmptyString
, 
  42                 const wxPoint
& pos 
= wxDefaultPosition
, 
  43                 const wxSize
& size 
= wxDefaultSize
, 
  45                 const wxValidator
& validator 
= wxDefaultValidator
, 
  46                 const wxString
& name 
= wxTextCtrlNameStr
); 
  48     // implement base class pure virtuals 
  49     // ---------------------------------- 
  51     virtual wxString 
GetValue() const; 
  52     virtual void SetValue(const wxString
& value
); 
  54     virtual wxString 
GetRange(long from
, long to
) const; 
  56     virtual int GetLineLength(long lineNo
) const; 
  57     virtual wxString 
GetLineText(long lineNo
) const; 
  58     virtual int GetNumberOfLines() const; 
  60     virtual bool IsModified() const; 
  61     virtual bool IsEditable() const; 
  63     virtual void GetSelection(long* from
, long* to
) const; 
  70     virtual void Replace(long from
, long to
, const wxString
& value
); 
  71     virtual void Remove(long from
, long to
); 
  73     // load the controls contents from the file 
  74     virtual bool LoadFile(const wxString
& file
); 
  76     // clears the dirty flag 
  77     virtual void DiscardEdits(); 
  79     virtual void SetMaxLength(unsigned long len
); 
  81     // writing text inserts it at the current position, appending always 
  82     // inserts it at the end 
  83     virtual void WriteText(const wxString
& text
); 
  84     virtual void AppendText(const wxString
& text
); 
  87     virtual bool EmulateKeyPress(const wxKeyEvent
& event
); 
  91     // apply text attribute to the range of text (only works with richedit 
  93     virtual bool SetStyle(long start
, long end
, const wxTextAttr
& style
); 
  94     virtual bool SetDefaultStyle(const wxTextAttr
& style
); 
  95     virtual bool GetStyle(long position
, wxTextAttr
& style
); 
  96 #endif // wxUSE_RICHEDIT 
  98     // translate between the position (which is just an index in the text ctrl 
  99     // considering all its contents as a single strings) and (x, y) coordinates 
 100     // which represent column and line. 
 101     virtual long XYToPosition(long x
, long y
) const; 
 102     virtual bool PositionToXY(long pos
, long *x
, long *y
) const; 
 104     virtual void ShowPosition(long pos
); 
 106     // Clipboard operations 
 109     virtual void Paste(); 
 111     virtual bool CanCopy() const; 
 112     virtual bool CanCut() const; 
 113     virtual bool CanPaste() const; 
 119     virtual bool CanUndo() const; 
 120     virtual bool CanRedo() const; 
 123     virtual void SetInsertionPoint(long pos
); 
 124     virtual void SetInsertionPointEnd(); 
 125     virtual long GetInsertionPoint() const; 
 126     virtual long GetLastPosition() const; 
 128     virtual void SetSelection(long from
, long to
); 
 129     virtual void SetEditable(bool editable
); 
 131     // Caret handling (Windows only) 
 133     bool ShowNativeCaret(bool show 
= true); 
 134     bool HideNativeCaret() { return ShowNativeCaret(false); } 
 136     // Implementation from now on 
 137     // -------------------------- 
 139     virtual void SetWindowStyleFlag(long style
); 
 141     virtual void Command(wxCommandEvent
& event
); 
 142     virtual bool MSWCommand(WXUINT param
, WXWORD id
); 
 143     virtual WXHBRUSH 
OnCtlColor(WXHDC pDC
, WXHWND pWnd
, WXUINT nCtlColor
, 
 144             WXUINT message
, WXWPARAM wParam
, WXLPARAM lParam
); 
 146     // In WIN16, need to override normal erasing because 
 147     // Ctl3D doesn't use the wxWindows background colour. 
 149     void OnEraseBackground(wxEraseEvent
& event
); 
 153     virtual bool MSWOnNotify(int idCtrl
, WXLPARAM lParam
, WXLPARAM 
*result
); 
 155     int GetRichVersion() const { return m_verRichEdit
; } 
 156     bool IsRich() const { return m_verRichEdit 
!= 0; } 
 158     // rich edit controls are not compatible with normal ones and wem ust set 
 159     // the colours for them otherwise 
 160     virtual bool SetBackgroundColour(const wxColour
& colour
); 
 161     virtual bool SetForegroundColour(const wxColour
& colour
); 
 162 #endif // wxUSE_RICHEDIT 
 164     virtual void AdoptAttributesFromHWND(); 
 166     virtual bool AcceptsFocus() const; 
 169     void OnDropFiles(wxDropFilesEvent
& event
); 
 170     void OnChar(wxKeyEvent
& event
); // Process 'enter' if required 
 172     void OnCut(wxCommandEvent
& event
); 
 173     void OnCopy(wxCommandEvent
& event
); 
 174     void OnPaste(wxCommandEvent
& event
); 
 175     void OnUndo(wxCommandEvent
& event
); 
 176     void OnRedo(wxCommandEvent
& event
); 
 177     void OnDelete(wxCommandEvent
& event
); 
 178     void OnSelectAll(wxCommandEvent
& event
); 
 180     void OnUpdateCut(wxUpdateUIEvent
& event
); 
 181     void OnUpdateCopy(wxUpdateUIEvent
& event
); 
 182     void OnUpdatePaste(wxUpdateUIEvent
& event
); 
 183     void OnUpdateUndo(wxUpdateUIEvent
& event
); 
 184     void OnUpdateRedo(wxUpdateUIEvent
& event
); 
 185     void OnUpdateDelete(wxUpdateUIEvent
& event
); 
 186     void OnUpdateSelectAll(wxUpdateUIEvent
& event
); 
 188     // Show a context menu for Rich Edit controls (the standard 
 189     // EDIT control has one already) 
 190     void OnRightClick(wxMouseEvent
& event
); 
 192     // be sure the caret remains invisible if the user 
 193     // called HideNativeCaret() before 
 194     void OnSetFocus(wxFocusEvent
& event
); 
 197     // common part of all ctors 
 200     // intercept WM_GETDLGCODE 
 201     virtual long MSWWindowProc(WXUINT nMsg
, WXWPARAM wParam
, WXLPARAM lParam
); 
 203     // call this to increase the size limit (will do nothing if the current 
 204     // limit is big enough) 
 206     // returns true if we increased the limit to allow entering more text, 
 207     // false if we hit the limit set by SetMaxLength() and so didn't change it 
 208     bool AdjustSpaceLimit(); 
 211     // replace the selection or the entire control contents with the given text 
 212     // in the specified encoding 
 213     bool StreamIn(const wxString
& value
, 
 214                   wxFontEncoding encoding
, 
 216 #endif // wxUSE_RICHEDIT 
 218     // replace the contents of the selection or of the entire control with the 
 220     void DoWriteText(const wxString
& text
, bool selectionOnly 
= TRUE
); 
 222     // set the selection possibly without scrolling the caret into view 
 223     void DoSetSelection(long from
, long to
, bool scrollCaret 
= TRUE
); 
 225     // return true if there is a non empty selection in the control 
 226     bool HasSelection() const; 
 228     // get the length of the line containing the character at the given 
 230     long GetLengthOfLineContainingPos(long pos
) const; 
 232     // send TEXT_UPDATED event, return TRUE if it was handled, FALSE otherwise 
 233     bool SendUpdateEvent(); 
 235     // override some base class virtuals 
 236     virtual bool MSWShouldPreProcessMessage(WXMSG
* pMsg
); 
 237     virtual wxSize 
DoGetBestSize() const; 
 239     virtual WXDWORD 
MSWGetStyle(long style
, WXDWORD 
*exstyle
) const; 
 242     // we're using RICHEDIT (and not simple EDIT) control if this field is not 
 243     // 0, it also gives the version of the RICHEDIT control being used (1, 2 or 
 246 #endif // wxUSE_RICHEDIT 
 248     // if TRUE, SendUpdateEvent() will eat the next event (see comments in the 
 249     // code as to why this is needed) 
 250     bool m_suppressNextUpdate
; 
 253     DECLARE_EVENT_TABLE() 
 254     DECLARE_DYNAMIC_CLASS_NO_COPY(wxTextCtrl
) 
 256     wxMenu
* m_privateContextMenu
; 
 258     bool m_isNativeCaretShown
;