Frage

wxWidgets hat wxStyledTextCtrl, die (wie ich sie verstehe) verwendet Scintilla hinter den Kulissen

Ich weiß nicht viel über Scintilla API, aber ich habe irgendwie die Idee, dass Sie Befehle zu erteilen.

Insbesondere möchte ich den Cursor einen Block-Stil machen, ich in Notepad ++ gefunden das folgende Snippet:

execute(SCI_SETCARETSTYLE, CARETSTYLE_BLOCK)

Ich möchte das gleiche in der StyledTextCtrl zu tun, aber ich habe keine Ahnung, wie man die scinitilla Kontrolle hinter der Szene zu erhalten.

Wie kann ich das tun?

P. S. Ich arbeite in wxPython, aber ich nehme an, es keinen Unterschied macht.

Update:

Nach einigen Graben in C ++ Quellen von wxWidgets, fand ich, dass die meisten Funktionen SendMsg nur nennen, zum Beispiel:

// Get the time in milliseconds that the caret is on and off. 0 = steady on.
void wxStyledTextCtrl::SetCaretPeriod(int periodMilliseconds)
{
    SendMsg(2076, periodMilliseconds, 0);
}

Also ich dachte, dass dies, wie man Befehle an die darunter liegenden scintilla Komponente senden würde.

Also, ich habe die Werte Ich brauche

#define CARETSTYLE_INVISIBLE 0
#define CARETSTYLE_LINE 1
#define CARETSTYLE_BLOCK 2
#define SCI_SETCARETSTYLE 2512
#define SCI_GETCARETSTYLE 2513

So SCI_SETCARETSTYLE ist 2512 und Block-Stil ist 2.

Also rief ich SengMsg mit diesen Parametern:

self.SendMsg(2512, 2)

Aber es schien keine Wirkung zu sein!

Was könnte der Grund sein? Wie kann ich das Debuggen?

War es hilfreich?

Lösung

Sie schreiben Sie nicht, welche Version von wxPython / wxWidgets Sie verwenden, aber ich nehme an, dass es die 2.8.x-Version. Diese enthält Scintilla Version 1.70, während die SVN Stamm hat Scintilla Version 1.75 (sobald wxWidgets Version 2.9 freigegeben werden). A grep über die Scintilla-Header-Dateien zeigt, dass SCI_GETCARETSTYLE und SCI_SETCARETSTYLE ist nur in dem wxWidgets Stamm, so dass diese Nachrichten nicht überhaupt behandelt werden in wxWidgets 2.8.

Andere Tipps

Versuchen

self.SendMsg(msg=2512, lp=2)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top