Scintilla не будет выделять или сворачивать код на моем C++.C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Scintilla не будет выделять или сворачивать код на моем C++.

Сообщение Anonymous »

Это мой код, отображается элемент управления редактированием, я вижу номера строк, я могу вводить текст, но он не выполняет свертывание кода или подсветку синтаксиса.
Как вы думаете, что может быть не так в моем коде?< /p>
Я использую API Win32, и моя программа хорошо компилируется, единственная проблема заключается в том, что, что бы я ни пытался, я не могу заставить ее выделить синтаксис в этом случае html.
Мой компилятор — g++ ( GCC) 13.2.0
void InitScintilla(HWND hwnd) {

// Create the Scintilla window
hSci = CreateWindowEx(
0, "Scintilla", "",
WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL,
0, 0, 640, 480, // Set initial size here
hwnd, NULL, GetModuleHandle(NULL), NULL
);

if (!hSci) {
MessageBox(hwnd, "Could not create Scintilla control.", "Error", MB_OK | MB_ICONERROR);
return;
}

// Set default style
SendMessage(hSci, SCI_STYLESETFONT, STYLE_DEFAULT, (LPARAM)"Courier New");
SendMessage(hSci, SCI_STYLESETSIZE, STYLE_DEFAULT, 10);
SendMessage(hSci, SCI_STYLECLEARALL, 0, 0); // Apply the default style to all styles

// Set up Scintilla for basic text editing
SendMessage(hSci, SCI_SETSTYLEBITS, 7, 0);
SendMessage(hSci, SCI_SETTABWIDTH, 4, 0);
SendMessage(hSci, SCI_SETCODEPAGE, SC_CP_UTF8, 0);
SendMessage(hSci, SCI_SETVIEWWS, SCWS_INVISIBLE, 0);
SendMessage(hSci, SCI_SETWRAPMODE, SC_WRAP_WORD, 0);
SendMessage(hSci, SCI_SETBUFFEREDDRAW, TRUE, 0);
SendMessage(hSci, SCI_SETTABINDENTS, TRUE, 0);
SendMessage(hSci, SCI_SETUSETABS, FALSE, 0);
SendMessage(hSci, SCI_SETINDENT, 4, 0);
SendMessage(hSci, SCI_SETTABINDENTS, TRUE, 0);
SendMessage(hSci, SCI_SETBACKSPACEUNINDENTS, TRUE, 0);
SendMessage(hSci, SCI_SETINDENTATIONGUIDES, SC_IV_REAL, 0);
SendMessage(hSci, SCI_SETPASTECONVERTENDINGS, TRUE, 0);

// Set up the margin for line numbers
SendMessage(hSci, SCI_SETMARGINTYPEN, 0, SC_MARGIN_NUMBER);
SendMessage(hSci, SCI_SETMARGINWIDTHN, 0, 40); // Width of the margin in pixels

// Optional: Customize the line number margin (e.g., font, color)
SendMessage(hSci, SCI_STYLESETFORE, STYLE_LINENUMBER, RGB(0, 0, 0)); // Foreground color
SendMessage(hSci, SCI_STYLESETBACK, STYLE_LINENUMBER, RGB(220, 220, 220)); // Background color
SendMessage(hSci, SCI_STYLESETFONT, STYLE_LINENUMBER, (LPARAM)"Courier New"); // Font
SendMessage(hSci, SCI_STYLESETSIZE, STYLE_LINENUMBER, 10); // Font size

// Enable code folding
SendMessage(hSci, SCI_SETMARGINTYPEN, 1, SC_MARGIN_SYMBOL);
SendMessage(hSci, SCI_SETMARGINMASKN, 1, SC_MASK_FOLDERS);
SendMessage(hSci, SCI_SETMARGINWIDTHN, 1, 20);
SendMessage(hSci, SCI_SETMARGINSENSITIVEN, 1, TRUE);
SendMessage(hSci, SCI_SETFOLDFLAGS, 16, 0);
SendMessage(hSci, SCI_SETMODEVENTMASK, SC_MOD_INSERTTEXT | SC_MOD_DELETETEXT, 0);

// Configure fold markers
SendMessage(hSci, SCI_MARKERDEFINE, SC_MARKNUM_FOLDEROPEN, SC_MARK_MINUS);
SendMessage(hSci, SCI_MARKERDEFINE, SC_MARKNUM_FOLDER, SC_MARK_PLUS);
SendMessage(hSci, SCI_MARKERDEFINE, SC_MARKNUM_FOLDERSUB, SC_MARK_EMPTY);
SendMessage(hSci, SCI_MARKERDEFINE, SC_MARKNUM_FOLDERTAIL, SC_MARK_EMPTY);
SendMessage(hSci, SCI_MARKERDEFINE, SC_MARKNUM_FOLDEREND, SC_MARK_EMPTY);
SendMessage(hSci, SCI_MARKERDEFINE, SC_MARKNUM_FOLDEROPENMID, SC_MARK_EMPTY);
SendMessage(hSci, SCI_MARKERDEFINE, SC_MARKNUM_FOLDERMIDTAIL, SC_MARK_EMPTY);

// Set the lexer to HTML for syntax highlighting
SendMessage(hSci, SCI_SETLEXER, SCLEX_HTML, 0);

// Set up HTML keywords
const char* htmlKeywords =
"html head title body h1 h2 h3 h4 h5 h6 p br div span "
"a img ul ol li table tr td th tbody thead tfoot caption "
"form input button select option textarea";

SendMessage(hSci, SCI_SETKEYWORDS, 0, (LPARAM)htmlKeywords);

// Set styles for HTML syntax highlighting
SendMessage(hSci, SCI_STYLESETFORE, SCE_H_TAG, RGB(0, 0, 255)); // Tags
SendMessage(hSci, SCI_STYLESETBOLD, SCE_H_TAG, TRUE); // Tags bold
SendMessage(hSci, SCI_STYLESETFORE, SCE_H_TAGUNKNOWN, RGB(255, 0, 0)); // Unknown tags
SendMessage(hSci, SCI_STYLESETFORE, SCE_H_ATTRIBUTE, RGB(128, 128, 128)); // Attributes
SendMessage(hSci, SCI_STYLESETFORE, SCE_H_ATTRIBUTEUNKNOWN, RGB(255, 0, 0)); // Unknown attributes
SendMessage(hSci, SCI_STYLESETFORE, SCE_H_VALUE, RGB(163, 21, 21)); // Attribute values
SendMessage(hSci, SCI_STYLESETFORE, SCE_H_DOUBLESTRING, RGB(163, 21, 21)); // Double-quoted strings
SendMessage(hSci, SCI_STYLESETFORE, SCE_H_SINGLESTRING, RGB(163, 21, 21)); // Single-quoted strings
SendMessage(hSci, SCI_STYLESETFORE, SCE_H_OTHER, RGB(0, 0, 0)); // Other text

// Optional: Set the default font for all styles again to ensure consistency
SendMessage(hSci, SCI_STYLESETFONT, STYLE_DEFAULT, (LPARAM)"Courier New");
SendMessage(hSci, SCI_STYLESETSIZE, STYLE_DEFAULT, 10);
SendMessage(hSci, SCI_STYLECLEARALL, 0, 0); // Apply the default style to all styles
}


Подробнее здесь: https://stackoverflow.com/questions/785 ... ld-in-my-c
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»