在VC++中分行获取CEdit控件的数据,可以通过以下几种方法实现。
方法1:使用GetDlgItemText函数
GetDlgItemText函数可以直接获取指定ID的CEdit控件的文本内容,然后你可以手动处理换行符(\r\n)来分行。
cpp
Copy Code
// 假设IDC_EDIT1是CEdit控件的ID
CString strText;
GetDlgItemText(IDC_EDIT1, strText);
// 使用CString的Find方法分割字符串
int pos = 0;
CString strLine;
while ((pos = strText.Find(_T('\n'))) != -1) {
strLine = strText.Left(pos);
// 处理每一行数据,例如显示在消息框中
AfxMessageBox(strLine);
strText = strText.Mid(pos + 1);
}
// 处理最后一行(如果存在)
if (!strText.IsEmpty()) {
AfxMessageBox(strText);
}
方法2:使用CEdit对象的GetWindowText函数
如果你已经获取了CEdit对象的指针,可以使用GetWindowText函数获取文本内容,然后同样处理换行符。
cpp
Copy Code
// 假设m_edit是CEdit控件的成员变量
CString strText;
m_edit.GetWindowText(strText);
// 分割字符串
int pos = 0;
CString strLine;
while ((pos = strText.Find(_T('\n'))) != -1) {
strLine = strText.Left(pos);
AfxMessageBox(strLine);
strText = strText.Mid(pos + 1);
}
if (!strText.IsEmpty()) {
AfxMessageBox(strText);
}
方法3:使用DDX_Text和UpdateData函数
如果你使用了MFC的对话框数据交换(DDX)机制,可以在DoDataExchange函数中设置变量与CEdit控件的关联,然后通过UpdateData函数获取数据。
cpp
Copy Code
// 在对话框类中定义成员变量
CString m_strEditContent;
// 在DoDataExchange函数中设置关联
void CMyDialog::DoDataExchange(CDataExchange* pDX) {
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT1, m_strEditContent);
}
// 获取数据并分行处理
void CMyDialog::OnSomeButtonClick() {
UpdateData(TRUE); // 获取控件数据到变量
// 分割字符串
int pos = 0;
CString strLine;
CString strContent = m_strEditContent;
while ((pos = strContent.Find(_T('\n'))) != -1) {
strLine = strContent.Left(pos);
AfxMessageBox(strLine);
strContent = strContent.Mid(pos + 1);
}
if (!strContent.IsEmpty()) {
AfxMessageBox(strContent);
}
}
方法4:使用CEdit的LineCount和GetLine函数
CEdit控件提供了GetLineCount和GetLine函数,可以直接获取行数和每行的内容。
cpp
Copy Code
// 假设m_edit是CEdit控件的成员变量
int nLineCount = m_edit.GetLineCount();
for (int i = 0; i < nLineCount; i++) {
CString strLine;
int nLength = m_edit.GetLine(i, strLine.GetBuffer(1024), 1024);
strLine.ReleaseBuffer(nLength);
AfxMessageBox(strLine);
}
总结
以上方法都可以实现分行获取CEdit控件的数据,你可以根据项目的具体需求和代码结构选择合适的方法。如果CEdit控件是多行的,并且已经设置了自动换行属性,那么使用GetLineCount和GetLine函数可能是最直接和高效的方式。
- [原文链接]()
- 注:知识搬运,供学习交流使用,侵联删!