Wxpython wxWidgets:如何更改StyledTextCtrl中的插入符号样式(向闪烁体发送命令)
wxWidgets有wxStyledTextCtrl,据我所知,它在幕后使用闪烁体 我对斯金特拉API了解不多,但我有一种想法,您可以向它发出命令 特别是,我想使光标具有块样式,我在Notepad++中找到了以下代码段:Wxpython wxWidgets:如何更改StyledTextCtrl中的插入符号样式(向闪烁体发送命令),wxpython,wxwidgets,caret,scintilla,Wxpython,Wxwidgets,Caret,Scintilla,wxWidgets有wxStyledTextCtrl,据我所知,它在幕后使用闪烁体 我对斯金特拉API了解不多,但我有一种想法,您可以向它发出命令 特别是,我想使光标具有块样式,我在Notepad++中找到了以下代码段: execute(SCI_SETCARETSTYLE, CARETSTYLE_BLOCK) 我想在StyledTextCtrl中执行同样的操作,但我不知道如何在场景后面访问Scinilla控件 我该怎么做 另外,我在wxPython工作,但我想这没什么区别 更新: 在WXWID
execute(SCI_SETCARETSTYLE, CARETSTYLE_BLOCK)
我想在StyledTextCtrl中执行同样的操作,但我不知道如何在场景后面访问Scinilla控件
我该怎么做
另外,我在wxPython工作,但我想这没什么区别
更新:
在WXWIDGET C++源代码中挖掘后,发现大部分函数只调用<代码> SDENMSG < /C> >,例如:
// 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
但似乎没有任何效果
原因可能是什么?我如何调试它?试试看
self.SendMsg(msg=2512, lp=2)
您不需要编写所使用的wxPython/wxWidgets的版本,但我假设它是2.8.x版本。其中包含闪烁版本1.70,而SVN主干(即将作为wxWidgets版本2.9发布)具有闪烁版本1.75。闪烁头文件上的grep显示SCI_GETCARETSTYLE和SCI_SETCARETSTYLE仅在wxWidgets主干中,因此在wxWidgets 2.8中根本不会处理这些消息
self.SendMsg(msg=2512, lp=2)