|
Hi
In my system not installed languagepack.when i paste chinese characters in rtf ..
In sending i wrote this code...
m_chattext.GetWindowText(m_Text);
AfxMessageBox(m_Text);
here m_chattext is rtf object.
in messagebox the chinese characters are not displaying..its coming ???? how i can solve this problem ...plz tell...
#sanroop#
|
|
|
|
|
Define UNICODE in the preprocessor definitions of project settings to make it support Unicode.
Maxwell Chen
|
|
|
|
|
First of all, make sure the appropriate language is installed on your machine. Next to it, make sure that you are making an Unicode build and not an ANSI build. Remove the _MBCS preprocessor directive and add the preprocessor directive:
#define _UNICODE //with the underscore.
This will implicitly add the preprocessor directive:
#define UNICODE //no underscore. (this is for windows api functions)
So, the compiler will make wide calls for both CRT functions and windows api functions and your application will be able to understand Unicode.
Nobody can give you wiser advice than yourself. - Cicero
.·´¯`·->ßRÅhmmÃ<-·´¯`·.
modified on Friday, January 04, 2008 11:26:44 AM
|
|
|
|
|
This blog is even interesting!
(Sorry that my system is having problem to paste texts onto CodeProject. I can only type raw URL without a hyperlink.)
http://blogs.msdn.com/oldnewthing/archive/2004/02/12/71851.aspx
Maxwell Chen
|
|
|
|
|
Yes, I've read that years ago. If I remember it right, Jeffery Ritcher's book has a very detailed explanation of this very interesting stuff.
Nobody can give you wiser advice than yourself. - Cicero
.·´¯`·->ßRÅhmmÃ<-·´¯`·.
|
|
|
|
|
Hi all,
First I create a dynamic buffer and set all element to zero. Then add a int value first to the buffer. Then after that int value add a string to the buffer, actually at the end of int value. But seems my code overwrite each other.
Here is the code,
char* tmpBuffer = new char[10];
::memset(tmpBuffer, 0, 10);
::memcpy(tmpBuffer, &iReq, 4);
::memcpy(tmpBuffer, &strGetName, 6);
How can I avoid this.
I appreciate your help all the time...
Eranga
|
|
|
|
|
memcpy(&tmpBuffer[4], &strGetName, 6);
Maxwell Chen
|
|
|
|
|
You mean like this,
::memcpy(&tmpBuffer[0], &iReq, 4);
::memcpy(&tmpBuffer[4], &strGetName, 6);
Great.........
I appreciate your help all the time...
Eranga
|
|
|
|
|
a good idea would be to use sizeof, ie:
::memcpy(&tmpBuffer[0], &iReq, 4);<br />
::memcpy(&tmpBuffer[sizeof(int)], &strGetName, 6);
|
|
|
|
|
Haroon Sarwar wrote: a good idea would be to use sizeof, ie:
::memcpy(&tmpBuffer[0], &iReq, 4);
::memcpy(&tmpBuffer[sizeof(int)], &strGetName, 6);
Refined as below:
memcpy(&tmpBuffer[0], &iReq, sizeof(int) );
memcpy(&tmpBuffer[0 + sizeof(int)], &strGetname, 6);
Maxwell Chen
|
|
|
|
|
Maxwell Chen wrote: Refined as below:
memcpy(&tmpBuffer[0], &iReq, sizeof(int) );
memcpy(&tmpBuffer[0 + sizeof(int)], &strGetname, 6);
Further refined as
memcpy(&tmpBuffer[0], &iReq, sizeof(iReq) );
memcpy(&tmpBuffer[0 + sizeof(iReq)], &strGetname, 6);
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
[my articles]
|
|
|
|
|
CPallini wrote: Further refined as
memcpy(&tmpBuffer[0], &iReq, sizeof(iReq) );
memcpy(&tmpBuffer[0 + sizeof(iReq)], &strGetname, 6);
Even more:
char* tmpBuffer = new char[sizeof(iReq) + strlen(strGetName)];
memcpy(&tmpBuffer[0], &iReq, sizeof(iReq) );
memcpy(&tmpBuffer[0 + sizeof(iReq)], &strGetName, strlen(strGetName) );
Maxwell Chen
|
|
|
|
|
Maxwell Chen wrote: Even more:
char* tmpBuffer = new char[sizeof(iReq) + strlen(strGetName)];
memcpy(&tmpBuffer[0], &iReq, sizeof(iReq) );
memcpy(&tmpBuffer[0 + sizeof(iReq)], &strGetName, strlen(strGetName) );
still, it's not the state of art :
char* tmpBuffer = new char[sizeof(iReq) + strlen(strGetName)];
if (tmpBuffer)
{
memcpy(&tmpBuffer[0], &iReq, sizeof(iReq) );
memcpy(&tmpBuffer[0 + sizeof(iReq)], &strGetName, strlen(strGetName) );
}
...
...
if (tmpBuffer) delete [] tmpBuffer;
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
[my articles]
|
|
|
|
|
|
Why is that. I know that sizeof(int) also gives the number 4. But why I can't use number 4 directly. Any special reason.
I appreciate your help all the time...
Eranga
|
|
|
|
|
Eranga Thennakoon wrote: Why is that. I know that sizeof(int) also gives the number 4. But why I can't use number 4 directly. Any special reason.
If you are coding 16-bit applications, sizeof(int) = 2.
16-bit DOS / Windows
sizeof int: 2
32-bit Windows
sizeof int: 4
64-bit Windows
sizeof int: 4
Maxwell Chen
|
|
|
|
|
eg. if you are porting your app to 64 bit machine somewhere in the future the size of an integer will be 8, and you will have to change 4 to 8 in the code to ensure it works correctly...using sizeof ensures no such change will need to be made...
|
|
|
|
|
Eranga Thennakoon wrote: ::memcpy(tmpBuffer, &iReq, 4);
::memcpy(tmpBuffer, &strGetName, 6);
These two statements are writing to the same location. The second one needs to write four bytes past the starting address of tmpBuffer , like.
memcpy(tmpBuffer, &iReq, 4);
memcpy(tmpBuffer+4, strGetName, 6);
"Normal is getting dressed in clothes that you buy for work and driving through traffic in a car that you are still paying for, in order to get to the job you need to pay for the clothes and the car and the house you leave vacant all day so you can afford to live in it." - Ellen Goodman
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
Yes my code overwriting the buffer. Any way pointing the buffer make correction to me, as on my second post. It is ok, right....
I appreciate your help all the time...
Eranga
|
|
|
|
|
Eranga Thennakoon wrote: Any way pointing the buffer make correction to me, as on my second post. It is ok, right....
I've no idea what you are saying here.
"Normal is getting dressed in clothes that you buy for work and driving through traffic in a car that you are still paying for, in order to get to the job you need to pay for the clothes and the car and the house you leave vacant all day so you can afford to live in it." - Ellen Goodman
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
I am porting bc3.1 code to VC++.Net. While compiling i am getting the above error in the below line
extern char MC_320_ATP[];
this is in header file and the cpp file contains
char MC_320_ATP[] = "\n#DIR A320\n 4.2 Micro Computer Test %02d.%02d.%04d %02d:%
02d:%02d";
Thanks for your help
Regards
|
|
|
|
|
subramanyeswari wrote: "\n#DIR A320\n 4.2 Micro Computer Test %02d.%02d.%04d %02d:%
is there a specific reason that there is a newline after this? or has is just been introduced while pasting the code here?
|
|
|
|
|
For the newline only. It is not from the copy and paste.
|
|
|
|
|
in that case can try removing it or putting a \ at the end, ie:
char MC_320_ATP[] = "\n#DIR A320\n 4.2 Micro Computer Test %02d.%02d.%04d %02d:% \<br />
02d:%02d";
|
|
|
|
|
I tried both. It didn't work
|
|
|
|