mfc — Подсветка синтаксиса для сцинтиллы в переполнении стека

Я работаю над редактором кода на основе MFC. Часть, на которой я застрял, — это когда мне нужно добавить цвет к ключевым словам, в принципе ничего не происходит. 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")));
}

0

Решение

Успел ее решить. Проблема заключалась в том, что я отправлял ключевые слова в широком символе (юникоде) в Scintilla, но он принимает их только в символе, поэтому, когда я изменил его на символ, это сработало.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]