Я работаю над интерпретатором командной строки.Ранее я использовал wxRichTextCtrl, где все работало хорошо, но недавно решил перенести его на wxStyledTextCtrl из-за удобства использования дополнительных стилей.
Моя цель - получить что-то вроде следующего:
>>a=3 -- enter pressed, no output
>>a -- enter pressed, output is 3, print 3 right below this line
3 -- The output length can vary, can be single or several lines
>> -- continue accepting input on this line
Я обрабатываю события KeyDown и KeyUp для клавиши Return:
void OnKeyDown(wxKeyEvent& evt);
void OnKeyUp(wxKeyEvent& evt);
Bind(wxEVT_KEY_DOWN, &CommandEditor::OnKeyDown, this);
Bind(wxEVT_KEY_UP, &CommandEditor::OnKeyUp, this);
void CommandEditor::OnKeyDown(wxKeyEvent & evt)
{
int evtCode = evt.GetKeyCode();
long int col, line;
PositionToXY(GetInsertionPoint(), &col, &line);
if (evtCode == WXK_RETURN)
OnReturnKeyDown(evt);
evt.Skip();
}
void CommandEditor::OnReturnKeyDown(wxKeyEvent & evt)
{
//Lines of code producing output
AppendText(output);
NewLine();
evt.Skip();
}
void CommandEditor::OnReturnKeyUp(wxKeyEvent & evt)
{
long int col, line;
PositionToXY(GetInsertionPoint(), &col, &line);
MarginSetText(line, ">>");
evt.Skip();
}
Похоже, когда я используюNewLine () после AppendText () происходит следующее:
Также, когда я нажимаю клавишу ввода (в нулевой строке):
long int col, line;
PositionToXY(GetInsertionPoint(), &col, &line);
код все еще сообщает line
как ноль;тем не менее, я думаю, что это должно быть 1, что имеет место для wxRichTextCtrl.Кажется, что в wxStyledTextCtrl все выглядит иначе.
Как оставить запись вывода ниже строки, в которой была введена команда, и продолжить с новой пустой строкой приглашения?
Любые идеи приветствуются.