MFC的Dialogbox多行文本框(CEdit)有最大字符限制,默认最大显示长度是?怎么实现显示160KB大小的文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC的Dialogbox多行文本框(CEdit)有最大字符限制,默认最大显示长度是?怎么实现显示160KB大小的文件相关的知识,希望对你有一定的参考价值。

多行编辑框控件在显示一个160KB大的文件内容时,只能显示部分,后如下设置后,CEdit *pEdit1 =(CEdit*)GetDlgItem(IDC_EDIT1); pEdit1->SetLimitText(1000000);,编辑框中不仅显示完整个txt文档的内容,还重复显示文档的部分内容,求有经验的人士指点,急,谢谢!

你无法显示160kb文件里面的全部内容是因为你的多行编辑框的属性未做如下设置:

那么他就只有那么几行可以显示,自然无法全部显示。

至于你设置pEdit1->SetLimitText(1000000);之后,会出现编辑框中不仅显示完整个txt文档的内容,还重复显示文档的部分内容,那是因为你未设置读文件的其实位置,加一个pEdit1.Setsel(0,-1);如果你想了解更多,建议你参考MSND文档

以上是我的建议,希望对你有所帮助。

追问

编辑框的属性是设置了的,我查过不少资料,编辑框控件确实有长度限制,xp系统默认只有64k。我设置了读文件的起始位置的,当文件比较小的时候都没有出过问题,大了才出现重复写的情况,这有可能文件较小时,一次就把文件内容读完了,但是当文件很大时。。。我也搞不清楚。。。菜鸟一个。

参考技术A 文本框最大显示是64K。超过的部分就不显示了。要想显示更多,得用richedit。 参考技术B 先在OnInitialDialog中使用pEdit1->SetLimitText(UINT_MAX);

将文本读取到一个CString中,然后 pEdit1->SetWindowText(str);
参考技术C 缓冲区的问题应该是

MFC输入框CEdit控件十六进制转换

做MFC串口发送的时候,一般使用CEdit控件作为发送输入框,一般是发送输入框关联一个CString的变量,通过updatedata更新,大部分情况下我们需要使用十六进制发送,但是CString默认是字符串格式,比如输入框输入11 22 33 44 55,实际上是内容"11 22 33 44 AA",我们希望将它转换为0x11,0x22,0x33,0x44,0xaa。

那么如何实现了,通过下列的2个函数实现

 1 //将一个字符串作为十六进制串转化为一个字节数组,字节间可用空格分隔,
 2 //返回转换后的字节数组长度,同时字节数组长度自动设置。
 3 //说明:将字符串str[]="11 22 33 44 AA"转换成0x11,0x22,0x33,0x44,0xaa
 4 int CMFC_Uart20160921Dlg::Str2Hex(CString str, char* data)
 5 {
 6     int t, t1;
 7     int rlen = 0, len = str.GetLength();
 8     //data.SetSize(len/2);
 9     for (int i = 0; i<len;)
10     {
11         char l, h = str[i];
12         if (h ==  )
13         {
14             i++;
15             continue;
16         }
17         i++;
18         if (i >= len)
19             break;
20         l = str[i];
21         t = HexChar(h);
22         t1 = HexChar(l);
23         if ((t == 16) || (t1 == 16))
24             break;
25         else
26             t = t * 16 + t1;
27         i++;
28         data[rlen] = (char)t;
29         rlen++;
30     }
31     return rlen;
32 }
33 
34 char CMFC_Uart20160921Dlg::HexChar(char c)
35 {
36     if ((c >= 0) && (c <= 9))
37         return c - 0x30;
38     else if ((c >= A) && (c <= F))
39         return c - A + 10;
40     else if ((c >= a) && (c <= f))
41         return c - a + 10;
42     else
43         return 0x10;
44 }

测试代码如下

char data[512];

//十六进制发送
int iLen = Str2Hex(m_EditSend,data);//m_EditSend是CEit控件关联的CString变量
pThreadCom->SendData((BYTE *)data, iLen);//通过串口发送数据

 

以上是关于MFC的Dialogbox多行文本框(CEdit)有最大字符限制,默认最大显示长度是?怎么实现显示160KB大小的文件的主要内容,如果未能解决你的问题,请参考以下文章

mfc CEdit 啥时候应该进行验证?

[WTL/ATL]_[初级]_[如何设置CEdit的文本框背景色和文字颜色]

[WTL/ATL]_[初级]_[如何设置CEdit的文本框背景色和文字颜色]

[WTL/ATL]_[初级]_[如何设置CEdit的文本框背景色和文字颜色]

CEdit控件[转]

MFC输入框CEdit控件十六进制转换