wxWidgets имеет wxStyledTextCtrl, который (как я понимаю) использует Scintilla за кулисами
Я не знаю много о Scintilla API, но у меня есть идея, что вы даете ему команды.
В частности, я хочу, чтобы курсор имел стиль блока, я нашел в Notepad ++ следующий фрагмент:
execute(SCI_SETCARETSTYLE, CARETSTYLE_BLOCK)
Я хочу сделать то же самое в StyledTextCtrl, но я не знаю, как добраться до элемента управления scinitilla за сценой.
Как мне это сделать?
P.S. Я работаю в 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
То есть SCI_SETCARETSTYLE
- 2512, а стиль блока - 2.
Итак, я позвонил SengMsg
со следующими параметрами:
self.SendMsg(2512, 2)
Но, похоже, никакого эффекта не было!
В чем может быть причина? Как я могу отладить это?