wxWidgetsにはwxStyledTextCtrlがあり、これは(私が理解しているように)舞台裏でScintillaを使用しています
Scintilla APIについてはよくわかりませんが、コマンドを発行するという考えはあります。
特に、カーソルをブロックスタイルにしたいのですが、Notepad++で次のスニペットを見つけました。
execute(SCI_SETCARETSTYLE, CARETSTYLE_BLOCK)
StyledTextCtrlでも同じことをしたいのですが、舞台裏でscinitillaコントロールにアクセスする方法がわかりません。
どうすればよいですか?
PS私はwxPythonで作業していますが、違いはないと思います。
アップデート:
wxWidgetsのc++ソースを掘り下げた後、ほとんどの関数がSendMsg
次のように呼び出すだけであることがわかりました。
// Get the time in milliseconds that the caret is on and off. 0 = steady on.
void wxStyledTextCtrl::SetCaretPeriod(int periodMilliseconds)
{
SendMsg(2076, periodMilliseconds, 0);
}
だから私は、これが基礎となるシンチラコンポーネントにコマンドを送信する方法であると考えました。
だから、私は必要な値を手に入れました
#define CARETSTYLE_INVISIBLE 0 #define CARETSTYLE_LINE 1 #define CARETSTYLE_BLOCK 2 #define SCI_SETCARETSTYLE 2512 #define SCI_GETCARETSTYLE 2513
2512もそうSCI_SETCARETSTYLE
です、そしてブロックスタイルは2です。
だから私はSengMsg
これらのパラメータで呼び出しました:
self.SendMsg(2512, 2)
しかし、効果はなかったようです!
理由は何でしょうか?どうすればこれをデバッグできますか?