📄 textctrl.h
字号:
/////////////////////////////////////////////////////////////////////////////// Name: wx/univ/textctrl.h// Purpose: wxTextCtrl class// Author: Vadim Zeitlin// Modified by:// Created: 15.09.00// RCS-ID: $Id: textctrl.h,v 1.25 2006/10/08 22:39:49 VZ Exp $// Copyright: (c) 2000 SciTech Software, Inc. (www.scitechsoft.com)// Licence: wxWindows licence/////////////////////////////////////////////////////////////////////////////#ifndef _WX_UNIV_TEXTCTRL_H_#define _WX_UNIV_TEXTCTRL_H_class WXDLLEXPORT wxCaret;class WXDLLEXPORT wxTextCtrlCommandProcessor;#include "wx/scrolwin.h" // for wxScrollHelper#include "wx/univ/inphand.h"// ----------------------------------------------------------------------------// wxTextCtrl actions// ----------------------------------------------------------------------------// cursor movement and also selection and delete operations#define wxACTION_TEXT_GOTO _T("goto") // to pos in numArg#define wxACTION_TEXT_FIRST _T("first") // go to pos 0#define wxACTION_TEXT_LAST _T("last") // go to last pos#define wxACTION_TEXT_HOME _T("home")#define wxACTION_TEXT_END _T("end")#define wxACTION_TEXT_LEFT _T("left")#define wxACTION_TEXT_RIGHT _T("right")#define wxACTION_TEXT_UP _T("up")#define wxACTION_TEXT_DOWN _T("down")#define wxACTION_TEXT_WORD_LEFT _T("wordleft")#define wxACTION_TEXT_WORD_RIGHT _T("wordright")#define wxACTION_TEXT_PAGE_UP _T("pageup")#define wxACTION_TEXT_PAGE_DOWN _T("pagedown")// clipboard operations#define wxACTION_TEXT_COPY _T("copy")#define wxACTION_TEXT_CUT _T("cut")#define wxACTION_TEXT_PASTE _T("paste")// insert text at the cursor position: the text is in strArg of PerformAction#define wxACTION_TEXT_INSERT _T("insert")// if the action starts with either of these prefixes and the rest of the// string is one of the movement commands, it means to select/delete text from// the current cursor position to the new one#define wxACTION_TEXT_PREFIX_SEL _T("sel")#define wxACTION_TEXT_PREFIX_DEL _T("del")// mouse selection#define wxACTION_TEXT_ANCHOR_SEL _T("anchorsel")#define wxACTION_TEXT_EXTEND_SEL _T("extendsel")#define wxACTION_TEXT_SEL_WORD _T("wordsel")#define wxACTION_TEXT_SEL_LINE _T("linesel")// undo or redo#define wxACTION_TEXT_UNDO _T("undo")#define wxACTION_TEXT_REDO _T("redo")// ----------------------------------------------------------------------------// wxTextCtrl// ----------------------------------------------------------------------------class WXDLLEXPORT wxTextCtrl : public wxTextCtrlBase, public wxScrollHelper{public: // creation // -------- wxTextCtrl() : wxScrollHelper(this) { Init(); } wxTextCtrl(wxWindow *parent, wxWindowID id, const wxString& value = wxEmptyString, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, const wxValidator& validator = wxDefaultValidator, const wxString& name = wxTextCtrlNameStr) : wxScrollHelper(this) { Init(); Create(parent, id, value, pos, size, style, validator, name); } bool Create(wxWindow *parent, wxWindowID id, const wxString& value = wxEmptyString, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, const wxValidator& validator = wxDefaultValidator, const wxString& name = wxTextCtrlNameStr); virtual ~wxTextCtrl(); // implement base class pure virtuals // ---------------------------------- virtual wxString GetValue() const; virtual int GetLineLength(wxTextCoord lineNo) const; virtual wxString GetLineText(wxTextCoord lineNo) const; virtual int GetNumberOfLines() const; virtual bool IsModified() const; virtual bool IsEditable() const; // If the return values from and to are the same, there is no selection. virtual void GetSelection(wxTextPos* from, wxTextPos* to) const; // operations // ---------- // editing virtual void Clear(); virtual void Replace(wxTextPos from, wxTextPos to, const wxString& value); virtual void Remove(wxTextPos from, wxTextPos to); // sets/clears the dirty flag virtual void MarkDirty(); virtual void DiscardEdits(); // writing text inserts it at the current position, appending always // inserts it at the end virtual void WriteText(const wxString& text); virtual void AppendText(const wxString& text); // translate between the position (which is just an index in the text ctrl // considering all its contents as a single strings) and (x, y) coordinates // which represent (logical, i.e. unwrapped) column and line. virtual wxTextPos XYToPosition(wxTextCoord x, wxTextCoord y) const; virtual bool PositionToXY(wxTextPos pos, wxTextCoord *x, wxTextCoord *y) const; // wxUniv-specific: find a screen position (in client coordinates) of the // given text position or of the caret bool PositionToLogicalXY(wxTextPos pos, wxCoord *x, wxCoord *y) const; bool PositionToDeviceXY(wxTextPos pos, wxCoord *x, wxCoord *y) const; wxPoint GetCaretPosition() const; virtual void ShowPosition(wxTextPos pos); // Clipboard operations virtual void Copy(); virtual void Cut(); virtual void Paste(); // Undo/redo virtual void Undo(); virtual void Redo(); virtual bool CanUndo() const; virtual bool CanRedo() const; // Insertion point virtual void SetInsertionPoint(wxTextPos pos); virtual void SetInsertionPointEnd(); virtual wxTextPos GetInsertionPoint() const; virtual wxTextPos GetLastPosition() const; virtual void SetSelection(wxTextPos from, wxTextPos to); virtual void SetEditable(bool editable); // wxUniv-specific methods // ----------------------- // caret stuff virtual void ShowCaret(bool show = true); void HideCaret() { ShowCaret(false); } void CreateCaret(); // for the current font size // helpers for cursor movement wxTextPos GetWordStart() const; wxTextPos GetWordEnd() const; // selection helpers bool HasSelection() const { return m_selStart != -1 && m_selEnd > m_selStart; } void ClearSelection(); void RemoveSelection(); wxString GetSelectionText() const; virtual wxTextCtrlHitTestResult HitTest(const wxPoint& pt, long *pos) const; virtual wxTextCtrlHitTestResult HitTest(const wxPoint& pt, wxTextCoord *col, wxTextCoord *row) const; // find the character at this position in the given line, return value as // for HitTest() // // NB: x is the logical coord (client and unscrolled) wxTextCtrlHitTestResult HitTestLine(const wxString& line, wxCoord x, wxTextCoord *colOut) const; // bring the given position into view void ShowHorzPosition(wxCoord pos); // scroll the window horizontally so that the first character shown is in // position pos void ScrollText(wxTextCoord col); // adjust the DC for horz text control scrolling too virtual void DoPrepareDC(wxDC& dc); // implementation only from now on // ------------------------------- // override this to take into account our scrollbar-less scrolling virtual void CalcUnscrolledPosition(int x, int y, int *xx, int *yy) const; virtual void CalcScrolledPosition(int x, int y, int *xx, int *yy) const; // perform an action virtual bool PerformAction(const wxControlAction& action, long numArg = -1, const wxString& strArg = wxEmptyString); static wxInputHandler *GetStdInputHandler(wxInputHandler *handlerDef); virtual wxInputHandler *DoGetStdInputHandler(wxInputHandler *handlerDef) { return GetStdInputHandler(handlerDef); } // override these methods to handle the caret virtual bool SetFont(const wxFont &font); virtual bool Enable(bool enable = true); // more readable flag testing methods bool IsPassword() const { return (GetWindowStyle() & wxTE_PASSWORD) != 0; } bool WrapLines() const { return !IsSingleLine() && !(GetWindowStyle() & wxHSCROLL); } // only for wxStdTextCtrlInputHandler void RefreshSelection(); // override wxScrollHelper method to prevent (auto)scrolling beyond the end // of line virtual bool SendAutoScrollEvents(wxScrollWinEvent& event) const; // idle processing virtual void OnInternalIdle();protected: // ensure we have correct default border virtual wxBorder GetDefaultBorder() const { return wxBORDER_SUNKEN; } // override base class methods virtual void DoDrawBorder(wxDC& dc, const wxRect& rect); virtual void DoDraw(wxControlRenderer *renderer); // calc the size from the text extent virtual wxSize DoGetBestClientSize() const; // implements Set/ChangeValue() virtual void DoSetValue(const wxString& value, int flags = 0); // common part of all ctors void Init(); // drawing
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -