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大小的文件的主要内容,如果未能解决你的问题,请参考以下文章
[WTL/ATL]_[初级]_[如何设置CEdit的文本框背景色和文字颜色]
[WTL/ATL]_[初级]_[如何设置CEdit的文本框背景色和文字颜色]