很难让wxStyledTextCtrl给我的单词列表着色。
x->m_ctlEdit->SetKeyWords(0,"true false");
x->SetWordChars(wxT("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMONPQRSTUVWXYZ._") );
x->StyleSetForeground(wxSTC_HPHP_WORD, wxColour(0x67,0xa6,0xff));“真”和“假”没有用这种方式着色,我在许多其他定义上都使用了StyleSetForeground,所有这些都很好,只是单词列表有问题。
作为第二个问题,我如何区分不同单词列表的颜色?我知道我可以用数字标识符设置不同的关键字列表,但是如何应用每个关键字列表的样式,因为函数不接受标识符?
注意:使用作为wxStyledTextCtrl默认选项的HTML
发布于 2019-05-10 13:31:37
对于wxSTC_LEX_HTML html lexer或wxSTC_LEX_PHPSCRIPT php,需要指定关键字集4。
x->m_ctlEdit->SetKeyWords(4,"true false");如果您使用的是html,您可以通过调用x->m_ctlEdit->DescribeKeyWordSets();来了解这一点,它将返回以下列表:
在本例中,PHP关键字的基于0的索引为4,因此这将是传递给SetKeyWords方法的数字。
但是,这种检查方法在使用PHP时失败,因为调用DescribeKeyWordSets只会返回“PHP关键字”。因此,您可能认为应该使用0调用SetKeyWords,但实际上仍然需要使用4,因为php脚本lexer与html相同。这似乎是一种奇怪的闪烁。
从一个不相关的角度来说,我认为对SetWordChars的调用是不必要的。根据文档,这是为了通过文字搜索,而不是关键字。
作为第二个问题,我如何区分不同单词列表的颜色?
那要看雷克萨斯了。例如,offers提供了以下关键字集
它对应于wxSTC_C_WORD、wxSTC_C_WORD2、wxSTC_C_COMMENTDOCKEYWORD等词表。
不幸的是,如上所述,html只为PHP提供了一个关键字集。
https://stackoverflow.com/questions/56074008
复制相似问题