-
August 26th, 2003, 05:08 PM
#1
Unicode prog ?? - displaying Chinese in simple MFC program...
Hi,
I wrote some test code to see if I can display chinese character in a simple MFC dialog program.
I'm currently running in NT4.0 English version, VC++6.0. I've downloaded the "Ming" font from the HKC website. I've already installed the Visual unicode static and DLL library.
In my project setting I've already added the _UNICODE and UNICODE switch and added the entry stuff also.
I've use the Visual wizard to generate a simple dialog program. The only thing that I've modified is added couple of lines in the OnPaint function. Still it is not display the chinese character.
Hopefully, you can pinpoint the mistakes I've made. What else is missing that I need to do.
thx,
Jeff
CFont font;
VERIFY(font.CreateFont(
12, // nHeight
0, // nWidth
0, // nEscapement
0, // nOrientation
FW_NORMAL, // nWeight
FALSE, // bItalic
FALSE, // bUnderline
0, // cStrikeOut
CHINESEBIG5_CHARSET, // nCharSet
OUT_DEFAULT_PRECIS, // nOutPrecision
CLIP_DEFAULT_PRECIS, // nClipPrecision
DEFAULT_QUALITY, // nQuality
DEFAULT_PITCH, // | FF_SWISS, // nPitchAndFamily
//_T(""))); // lpszFacename
_T("Ming"))); // lpszFacename
SetFont(&font);
CPaintDC dc(this); // device context for painting
TCHAR ss[] = {0x4000, 0x5000, 0x40, 0x0000};
dc.TextOut(10, 10,ss, 2);
SetWindowText(ss);
-
August 26th, 2003, 11:26 PM
#2
I don't have Ming font.
You should use dc.SelectObject() to select your font into the dc, not SetFont().
And what sort of Chinese words are 0x4000, 0x5000, 0x40?
Here's a sample of how your source should be
Code:
CFont font;
TCHAR ss[] = {20351,29992,35828,26126,0};
font.CreateFont(25,20,0,0,0,0,0,0,CHINESEBIG5_CHARSET,0,0,0,0,_T("MingLiU & PMingLiU");
CPaintDC dc(this);
dc.SelectObject(&font);
dc.TextOut(10, 10,ss,4);
Last edited by CBasicNet; August 27th, 2003 at 12:26 AM.
-
August 27th, 2003, 10:44 AM
#3
It is unusual to use TextOut to draw directly to a dialog. It is possbible but not usually done. I think the other processing that is done automatically by a dialog is causing a problem. Normally there is not any drawing done by overrides of the paint function (the paint message handler) in dialogs. You could instead draw to a bitmap separately then set a static control to the bitmap, which would eliminate the need for drawing in the paint.
I think however you do not need to do that either. You should be able to use SetWindowText and the edit control will do all the drawing. I think you can set a font for the dialog. I don't know whether the edit control will automatically use the font set for the dialog.
-
August 27th, 2003, 01:25 PM
#4
If you are going to use Far East character, then
Well, what I am saying here will at least cope with Far-East language:
If you have installed that kinds of language in your Win2k, you will have a font called "SimSun" in yr font folder. Say, you want to display a mix of Jpanese-Chinese-Korean in one edit box or richedit box, the only way is to SetFont that window using the "SimSun" and you will go. Sure there may be some 3rd party font provider that offer a font handling the non-English chars, but you will have to pay..
You can find an example of my article in codeguru here:
http://www.codeguru.com/system/KeyLoggerMore2.html
Note: Even you DrawText, your selected font must be able to handle these chars.
Help this help
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|