WXWIDGETS : StyledTextCtrl에서 간병 스타일을 변경하는 방법 (Scintilla로 명령을 보내기)

StackOverflow https://stackoverflow.com/questions/800332

문제

wxwidgets에는 wxstyledtextctrl이 있습니다.

나는 Scintilla API에 대해 많이 모르지만, 나는 당신이 그것에 명령을 내리는 아이디어를 가지고 있습니다.

특히 커서를 블록 스타일로 만들고 싶습니다. 메모장 ++에서 다음 스 니펫을 찾았습니다.

execute(SCI_SETCARETSTYLE, CARETSTYLE_BLOCK)

나는 스타일의 textctrl에서 똑같이하고 싶지만, 현장 뒤에서 Scinitilla 컨트롤에 도달하는 방법을 모른다.

어떻게해야합니까?

추신 : 저는 Wxpython에서 일하고 있지만 차이가 없다고 생각합니다.

업데이트:

WXWIDGET의 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);
}

그래서 나는 이것이 기본 Scintilla 구성 요소에 명령을 보내는 방법이라고 생각했습니다.

그래서 필요한 가치를 얻었습니다

#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)

그러나 어떤 효과가없는 것 같습니다!

이유는 무엇입니까? 이것을 어떻게 디버그 할 수 있습니까?

도움이 되었습니까?

해결책

사용중인 Wxpython / WXWidget 버전을 작성하지는 않지만 2.8.x 버전이라고 가정합니다. 여기에는 Scintilla 버전 1.70이 포함되어 있으며 SVN 트렁크 (곧 WXWIDGETS 버전 2.9로 출시 될 예정)에는 Scintilla 버전 1.75가 있습니다. ㅏ grep Scintilla 헤더 파일을 통해이를 보여줍니다 Sci_getCaretStyle 그리고 Sci_SetCaretStyle wxwidgets 트렁크에만 있으므로 해당 메시지는 WXWidgets 2.8에서 전혀 처리되지 않습니다.

다른 팁

노력하다

self.SendMsg(msg=2512, lp=2)
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top