CEdit获取编辑框的内容

CEdit获取编辑框的内容

大家对获取编辑框的内容可能已经很熟悉了,无非是先定义一个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() ;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值