Visual C++如何从富文本框中读取
Visual c++ how to read from rich text box
我想在 Visual c++ 中逐行读取富文本框,但不知道如何操作。
谁能提供一个小例子说明它是如何工作的?我是 visual studio 和 Visual C++ 的新手。
我想做的是使用 for 循环将富文本框中的每一行存储在一个字符串中。
假设在我的富文本框中:
文本1
文字2
文字3
for 循环几乎会读取每一行,然后我会用它做其他操作。
你没有说你实际使用的是哪种富文本框。
如果您使用的是 .NET RichTextBox
class, you can iterate through its Lines
属性:
array<String^>^ lines = textBox->Lines;
int count = lines->Length;
for (int idx = 0; idx < count; ++idx)
{
// use lines[idx] as needed...
}
如果您使用的是 MFC CRichEditCtrl
class, you can call its GetLineCount()
, LineLength()
, and 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
control, you can send it EM_GETLINECOUNT
, EM_LINELENGTH
, and EM_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...
}
我想在 Visual c++ 中逐行读取富文本框,但不知道如何操作。 谁能提供一个小例子说明它是如何工作的?我是 visual studio 和 Visual C++ 的新手。 我想做的是使用 for 循环将富文本框中的每一行存储在一个字符串中。 假设在我的富文本框中: 文本1 文字2 文字3 for 循环几乎会读取每一行,然后我会用它做其他操作。
你没有说你实际使用的是哪种富文本框。
如果您使用的是 .NET RichTextBox
class, you can iterate through its Lines
属性:
array<String^>^ lines = textBox->Lines;
int count = lines->Length;
for (int idx = 0; idx < count; ++idx)
{
// use lines[idx] as needed...
}
如果您使用的是 MFC CRichEditCtrl
class, you can call its GetLineCount()
, LineLength()
, and 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
control, you can send it EM_GETLINECOUNT
, EM_LINELENGTH
, and EM_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...
}