繁体   English   中英

C ++中Scintilla的语法突出显示

[英]Syntax Highlighting for Scintilla in C++

我正在使用基于MFC的代码编辑器。 我遇到的问题是,当我需要为关键字添加颜色时,bassicaly没有任何反应。 SCE_C_WORD应该进行设置(我也找到了SCE_C_WORD2,但是什么也没有发生)。

void ScintillaCtrl::SetUpEditor()
{
    SendEditor(SCI_SETKEYWORDS, NULL, reinterpret_cast<LPARAM>(ini.GetKeywords()));

    SetAStyle(SCE_C_COMMENT, ini.GetColor(_T("comment")));
    SetAStyle(SCE_C_COMMENTLINE, ini.GetColor(_T("comment")));
    SetAStyle(SCE_C_COMMENTDOC, ini.GetColor(_T("comment")));
    SetAStyle(SCE_C_NUMBER, ini.GetColor(_T("number")));
    SetAStyle(SCE_C_STRING, ini.GetColor(_T("string")));
    SetAStyle(SCE_C_CHARACTER, ini.GetColor(_T("string")));
    SetAStyle(SCE_C_UUID, ini.GetColor(_T("uuid")));
    SetAStyle(SCE_C_OPERATOR, ini.GetColor(_T("operators")));
    SetAStyle(SCE_C_PREPROCESSOR, ini.GetColor(_T("preprocessor")));
    SetAStyle(SCE_C_WORD, ini.GetColor(_T("keywords")));
    //SetAStyle(SCE_C_WORD2, ini.GetColor(_T("keywords")));
}

这是我为语言设置编辑器的方法(从ini文件中读取颜色)。 我已经检查过并将颜色写入ini文件中,并且所有其他颜色均起作用(注释,运算符等)。

编辑:标签宽度,词法分析器等的代码...

void ScintillaCtrl::LoadDefaultState()
{
    SendEditor(SCI_SETLEXER, SCLEX_NULL);
    SendEditor(SCI_SETTABWIDTH,4);
    SetAStyle(STYLE_DEFAULT, RGB(0, 0, 0), RGB(255, 255, 255), 10, "Arial");
    SendEditor(SCI_SETCARETFORE, RGB(0, 0, 0));
    SendEditor(SCI_STYLECLEARALL, NULL);
    SendEditor(SCI_SETSELBACK, TRUE, ini.GetColor(_T("selection")));
}

设法解决它。 问题是我正在将宽字符(unicode)中的关键字发送给Scintilla,但是它只接受char中的关键字,因此当我将其更改为char时,它可以工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM