Login dark
title: CEdit获取编辑框的内容
author: Love02xp
date: 2020-08-09 13:04:17
category: [编程代码]
tags: [VC6,代码,学习]

CEdit获取编辑框的内容

@TOC

_

正文

大家对获取编辑框的内容可能已经很熟悉了,无非是先定义一个CString类型的变量m_str,然后调用GetDlgItem(编辑框ID)->GetWindowText(str),这样就可以轻松获取到编辑框的内容。但如果我要设置此编辑框为只读模式,要求我们获取编辑框的内容,那该怎么办呢?

我们知道,ReadOnly是CEdit的成员变量,显然定义CString类型的变量不能完成既定目标。这时我们就必须为编辑框绑定一个CEdit类型的控件变量m_string。将此编辑框设置为只读模式就很简单了,直接调用函数m_string.SetReadOnly();就可以了。

获取单行文本相对比较简单,这里简单介绍下,关于获取多行文本,MSDN有详细介绍,还有实例,大家可以参考下。具体方法如下:

首先,我们定义一个CString类型的变量str_data,用来保存获取到的编辑框的内容。然后计算编辑框文本的长度,使用CEdit的成员函数GetLine即可得到编辑框的内容,最后要记得释放字符串缓冲区,否则有关CString的操作将不可用!代码如下:

m_string.SetReadOnly();

CString str_data;

int len = m_string.LineLength();

m_string.GetLine(0,str_data.GetBuffer(len), len);

str_data.ReleaseBuffer(len);

如果想把编辑框的文本转化为int型,只需调用函数atoi,如下所示:

int num = atoi(str_data);

则num中保存的就是int型的数据。

最后与网友分享两篇别人总结的相关知识。

1、CEdit获取一行的文字

CEdit的接口LineLength(nCharIndex) 的参数并不是指CEdit的第几行,需要通过函数LineIndex来进行转换。

int nIndex = 4 ; //假设要获取CEdit的第4行的文字

int nCharIndex = nCharIndex = this->LineIndex(nIndex) ;

int nlen = this->LineLength(nCharIndex) ;

CString strText ;

this->GetLine(nIndex, strText.GetBuffer(nlen), nlen) ;

strText.ReleaseBuffer() ;

2、获取鼠标双击CEdit的那行文字

void MyEdit::OnLButtonDblClk(UINT nFlags, CPoint point)

{

CEdit::OnLButtonDblClk(nFlags, point) ;
int nIndex = this->CharFromPos(point) ;

int nCharIndex = LOWORD(nIndex) ; 

nIndex = HIWORD(nIndex) ;

if (nIndex == -1)

{

    return ;

}

CString strText ;

int nCharIndex = this->LineIndex(nIndex) ;
int nlen = this->LineLength(nCharIndex) ;

this->GetLine(nIndex, strText.GetBuffer(nlen), nlen) ;

strText.ReleaseBuffer() ;

}

_

  • [原文链接]()
  • 注:知识搬运,供学习交流使用,侵联删!

_