读书人

GetLineLineLength 有关文本长度的有

发布时间: 2012-12-15 15:16:03 作者: rapoo

GetLine,LineLength 有关文本长度的问题

for (i=0;i < nLineCount;i++)
{
m_CtrlTxtAnswerIn.GetLine(i, strText.GetBuffer(m_CtrlTxtAnswerIn.LineLength(i)));
strText.ReleaseBuffer();
}

-----------------
8,S,d,1
9,S,a,1
10,S,b,1
--------------------
上边这三行,如果只读第一,二行是可以的。但是一读第三行就不行了。就崩溃了。

应该是文本长度的问题了,百度了下,还是没看懂。

这个要怎么处理呢?
[解决办法]
接下来是CRichEditCtrl类的LineLength方法的正确使用。
顾名思义,LineLength方法的作用是获取CRichEditCtrl的某一行的长度。该函数的原型如下 int LineLength(int nLine = -1) const; 这里的nLine是Index,也就是索引。我今天使用时理所当然地认为该索引就是行索引,就这样使用:
for (i=0;i < nLineCount;i++)
{
nLineLength = pmyRichEditCtrl->LineLength(i);
……
}
结果得到的总是第一行的长度,超级郁闷,百思不得其解。
还得诉诸网络啊~
事实上这里参数nLine的含义跟我们平常接触到的大多数概念不完全一样,它并不是行数,而是该rich edit control中的字符位置,根据此位置计算位于第几行,该函数就获取的是第几行的长度,如果给出的值为-1,则获取的是当前行(光标所在行)的长度。正确的写法应该是:
for (i=0;i < nLineCount;i++)
{
nLineLength = pmyRichEditCtrl->LineLength(pmyRichEditCtrl->LineIndex(i));
……
}
这样就搞定了。

original:http://blog.csdn.net/valerie_7/article/details/6482556

读书人网 >VC/MFC

热点推荐