Visual c + +如何阅读富文本框

时间:2015-07-07 18:49:46

标签: c++ visual-c++ visual-studio-2013 richtextbox line-by-line

我试图在Visual c ++中逐行读取富文本框,但不知道如何操作。 任何人都可以提供一个小例子吗?我是visual studio和Visual C ++的新手。 我想做的是使用for循环将富文本框中的每一行存储在字符串中。 让我们在富文本框中说: 文本1 文本2 文字3 for循环几乎会读取每一行,而不是我将用它做其他操作。

1 个答案:

答案 0 :(得分:0)

您没有说明您实际使用的是哪种富文本框。

如果您使用的是.NET RichTextBox类,则可以遍历其Lines属性:

array<String^>^ lines = textBox->Lines;
int count = lines->Length;

for (int idx = 0; idx < count; ++idx)
{
    // use lines[idx] as needed...
}

如果您使用的是MFC CRichEditCtrl课程,则可以调用其GetLineCount()LineLength()GetLine()方法:

int count = textBox.GetLineCount();

for (int idx = 0; idx < count; ++idx)
{
    std::basic_string<TCHAR> line;

    int len = textBox.LineLength(idx);
    if (len > 0)
    {
        line.resize(len+1);
        len = textBox.GetLine(idx, &line[0], len);
        line.resize(len);
    }

    // use line as needed...
}

如果您使用的是Win32 Rich Edit控件,则可以发送EM_GETLINECOUNTEM_LINELENGTHEM_GETLINE条消息:

int count = SendMessage(hTextBox, EM_GETLINECOUNT, 0, 0);

for (int idx = 0; idx < count; ++idx)
{
    std::basic_string<TCHAR> line;

    int len = SendMessage(hTextBox, EM_LINELENGTH, idx, 0);
    if (len > 0)
    {
        line.resize(len+1);
        *(reinterpret_cast<WORD*>(&line[0])) = (WORD)len;
        len = SendMessage(hTextBox, EM_GETLINE, idx, reinterpret_cast<LPARAM>(&line[0]));
        line.resize(len);
    }

    // use line as needed...
}