Visual c++如何从富文本框中读取

Visual c++ how to read from rich text box

本文关键字:文本 读取 c++ Visual      更新时间:2023-10-16

我正在尝试从Visual c++中逐行读取富文本框,但不知道如何做到这一点。谁能提供一个它是如何工作的小例子?我对visual studio和visual c++还是个新手。我想做的是,将富文本框中的每一行存储在字符串中,使用for循环。假设在富文本框中我有:text1text2text3for循环几乎会读取每一行,然后我将对它进行其他操作。

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

如果你正在使用。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_GETLINECOUNT, EM_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...
}