CEdit carriage returns
-
Hi I have a CEdit control that I am trying to have multilined. I am reading a file into a char array buffer:
char buffer[1000]; CClass->Read(Buffer, length);
My question is that when I have the edit box display the buffer it is not displaying it correctly. Instead of carriage returns I am getting 'square' boxes. I moved the buffer into a CString, but its not picking up the CRLF. How do I go about doing this? Do I have to search and replace? Or, is there a CString method that easily fixes the CRLF problem I am having. I tried using the character array and a type-casted CString variable but I keep getting the same problem. The class I am using is CHttpFile and its read method. TIA for any help or insight you can give into this matter. -
Hi I have a CEdit control that I am trying to have multilined. I am reading a file into a char array buffer:
char buffer[1000]; CClass->Read(Buffer, length);
My question is that when I have the edit box display the buffer it is not displaying it correctly. Instead of carriage returns I am getting 'square' boxes. I moved the buffer into a CString, but its not picking up the CRLF. How do I go about doing this? Do I have to search and replace? Or, is there a CString method that easily fixes the CRLF problem I am having. I tried using the character array and a type-casted CString variable but I keep getting the same problem. The class I am using is CHttpFile and its read method. TIA for any help or insight you can give into this matter.try \r instead of \n in your code
-
Hi I have a CEdit control that I am trying to have multilined. I am reading a file into a char array buffer:
char buffer[1000]; CClass->Read(Buffer, length);
My question is that when I have the edit box display the buffer it is not displaying it correctly. Instead of carriage returns I am getting 'square' boxes. I moved the buffer into a CString, but its not picking up the CRLF. How do I go about doing this? Do I have to search and replace? Or, is there a CString method that easily fixes the CRLF problem I am having. I tried using the character array and a type-casted CString variable but I keep getting the same problem. The class I am using is CHttpFile and its read method. TIA for any help or insight you can give into this matter.I have not used an multiline edit control for a while, but if you are reading in a file from disk and getting 'square' boxes. Then you probubly need to strip out the the CRs and just end the lines with LF. If this is the case, and you want to write the text back to disk, you may need to insert the CRs back into the text before saving. INTP
-
try \r instead of \n in your code
Sorry should have been more clear but thanks for the fast response. I am not adding the '\r\n' or anything into the code, it is how it is getting read into the buffer from the member function. I'll post an example when I get home from the code I have but basically its: Create CInternetSession and CHttpFile, send request, and then the read member function from CHttpFile. Then I just call
SetDlgItemText(IDC_EDIT, strBuff);
Where strBuff is a CString that has been created using the character array CString strBuff(Buffer); I know its redundant but I did this to see if CString would handle the carriage return better but its not :( -
I have not used an multiline edit control for a while, but if you are reading in a file from disk and getting 'square' boxes. Then you probubly need to strip out the the CRs and just end the lines with LF. If this is the case, and you want to write the text back to disk, you may need to insert the CRs back into the text before saving. INTP
-
Sorry should have been more clear but thanks for the fast response. I am not adding the '\r\n' or anything into the code, it is how it is getting read into the buffer from the member function. I'll post an example when I get home from the code I have but basically its: Create CInternetSession and CHttpFile, send request, and then the read member function from CHttpFile. Then I just call
SetDlgItemText(IDC_EDIT, strBuff);
Where strBuff is a CString that has been created using the character array CString strBuff(Buffer); I know its redundant but I did this to see if CString would handle the carriage return better but its not :(Well then, Once again, on the same string you send to the edit box, try : strBuff.Remove ('\r'); See if that will work.
-
Well then, Once again, on the same string you send to the edit box, try : strBuff.Remove ('\r'); See if that will work.
-
Hi I have a CEdit control that I am trying to have multilined. I am reading a file into a char array buffer:
char buffer[1000]; CClass->Read(Buffer, length);
My question is that when I have the edit box display the buffer it is not displaying it correctly. Instead of carriage returns I am getting 'square' boxes. I moved the buffer into a CString, but its not picking up the CRLF. How do I go about doing this? Do I have to search and replace? Or, is there a CString method that easily fixes the CRLF problem I am having. I tried using the character array and a type-casted CString variable but I keep getting the same problem. The class I am using is CHttpFile and its read method. TIA for any help or insight you can give into this matter.Make sure the control has the ES_MULTILINE style.
-
Make sure the control has the ES_MULTILINE style.
Its set to true. Btw I am using Visual Studio.Net the first release, and I can't believe that it does not have a single service pack or update for it.
-
Its set to true. Btw I am using Visual Studio.Net the first release, and I can't believe that it does not have a single service pack or update for it.
Then the following code snippet should work:
m_edit.SetWindowText("This is on line 1\r\nThis is on line 2\r\nThis is on line 3");
-
Thanks I thought that is what I had todo, but I figured their would have been a helper function or a member of CString todo that since it sounds like something a lot of people would do. Oh well time to write a small search and replace function :)
There normaly is but you did not say what class you is providing the read method. CArchive provides ReadString() (reads one line at a time), although I think it removeS the CRLF and replaces it with a '\0'. If using stdio (C) then you would use fgets() replaces the CRLF with '\n''\0'. So you may, or may not, already have a method that will help you. INTP
-
Then the following code snippet should work:
m_edit.SetWindowText("This is on line 1\r\nThis is on line 2\r\nThis is on line 3");
DavidCrow yes that would work thank you. But the enformation I am getting is placed inside a buffer which is a CString, and it is that CString I am putting into the edit box, for example: SetDlgItemText(IDC_EDIT, strBuffer); Where strBuffer is a CString, and the information from that is read from a file. Once placed inside the CEdit box it is displaying those weird 'squares' instead of doing a CRLF.
-
DavidCrow yes that would work thank you. But the enformation I am getting is placed inside a buffer which is a CString, and it is that CString I am putting into the edit box, for example: SetDlgItemText(IDC_EDIT, strBuffer); Where strBuffer is a CString, and the information from that is read from a file. Once placed inside the CEdit box it is displaying those weird 'squares' instead of doing a CRLF.
It matters not that SetWindowText()'s parameter is a CString, or a string literal. The characters \r\n must be used. If you are only receiving one of them, a quick search and replace is all that's needed. For example:
CString str = "This is on line 1\rThis is on line 2\rThis is on line 3"; str.Replace("\r", "\r\n"); m_edit.SetWindowText(str);
-
Thanks I thought that is what I had todo, but I figured their would have been a helper function or a member of CString todo that since it sounds like something a lot of people would do. Oh well time to write a small search and replace function :)
-
scontapay wrote: I figured their would have been a helper function or a member of CString
strTextWithCarriageReturns::Remove(_T('\r'));
Shog9
Give me a Leonard Cohen afterworld So I can sigh enternally...
Thanks I see where my problem is. It is the fact that I kept misreading everyones advice :( I thought everyone was trying to tell me to insert it into the buffer I was creating, and didn't think anyone knew I was reading it in. My fault... See what 6-8 months away does to a C++ programmer when programminging VB! :|
-
It matters not that SetWindowText()'s parameter is a CString, or a string literal. The characters \r\n must be used. If you are only receiving one of them, a quick search and replace is all that's needed. For example:
CString str = "This is on line 1\rThis is on line 2\rThis is on line 3"; str.Replace("\r", "\r\n"); m_edit.SetWindowText(str);
I wanted to thank you for your help. Here is a copy of a post made above so you know what happened: Thanks I see where my problem is. It is the fact that I kept misreading everyones advice I thought everyone was trying to tell me to insert it into the buffer I was creating, and didn't think anyone knew I was reading it in. My fault... See what 6-8 months away does to a C++ programmer when programminging VB! :|