我正在使用命令行解释器。以前,我使用了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
我为Return键处理KeyDown和KeyUp事件:
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();
}
当我在AppendText()之后使用NewLine()时,似乎发生了以下情况:
另外,当我按Enter键时(在第0行):
long int col, line;
PositionToXY(GetInsertionPoint(), &col, &line);
代码仍将line
报告为零;但是,我认为应该为1,wxRichTextCtrl就是这种情况。感觉在wxStyledTextCtrl中事情似乎有所不同。
如何使输出写在输入命令的行下方并继续使用新的空提示行?
任何想法表示赞赏。