wxStyledTextCtrl,附加一个可变长度的文本并添加一个空的新行

时间:2019-05-31 21:53:13

标签: wxwidgets scintilla wxstyledtextctrl

我正在使用命令行解释器。以前,我使用了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 image description here

另外,当我按Enter键时(在第0行):

long int col, line;
PositionToXY(GetInsertionPoint(), &col, &line);

代码仍将line报告为零;但是,我认为应该为1,wxRichTextCtrl就是这种情况。感觉在wxStyledTextCtrl中事情似乎有所不同。

如何使输出写在输入命令的行下方并继续使用新的空提示行?

任何想法表示赞赏。

0 个答案:

没有答案