1.将字体选入设备述描中
SelectObject(hdc,CreateFont(0,0,0,0,0,0,0,0,0,0,0,0,FIXED_PITCH,NULL));
TextOut(hdc,280,0,_T("中文"),4);
这时输出的是汉字2.将字体选入设备述描中
SelectObject(hdc,CreateFont(0,0,0,0,0,0,0,0,134,0,0,0,FIXED_PITCH,NULL));
TextOut(hdc,280,0,_T("中文"),4);
这时输出的是汉字3.将字体选入设备述描中
SelectObject(hdc,CreateFont(0,0,0,0,0,0,0,0,161,0,0,0,FIXED_PITCH,NULL));
TextOut(hdc,280,0,_T("中文"),4);
这时输出的是希腊字符这想知道的是第一次显示的为什么是汉字而不是ANSI字符集中的字符ÖÐÎÄ.

解决方案 »

  1.   

    因为我们用的是中文版,中文版中遇到双字符如果两个字符的最高二进制位是1,就会优先解释为汉字。西欧字符是ascii码后来增补的(128~255),每个国家不一样不说(有希腊文、西欧、西里尔等等不同版本),而且高位是1(10000000~11111111),淡然在中文版理会解释为汉字了
      

  2.   

    ÖÐÎÄ这是西欧版,法语、德语、意大利语使用的。其实ASCII码只有前128个字符是标准的,后面的有好几套版本,看看输入法里的软键盘,右击,会出现日文、数学符号、制表符等等软键盘选择,这些都是字符,记事本这样的纯文本都可以认,他们就是ASCII的后128位。┌──────┬──────┐
    ├──────┼──────┤
    ├──────┼──────┤
    └──────┴──────┘瞧瞧,这就是我用IBM版本的ASCII画的表格,记事本也是可以制表的……
      

  3.   

    即然是中文版,中文版中遇到双字符如果两个字符的最高二进制位是1,就会优先解释为汉字。那为什么修改字符集为161的时候就显示为希腊文呢?如下:
    SelectObject(hdc,CreateFont(0,0,0,0,0,0,0,0,161,0,0,0,FIXED_PITCH,NULL)); 
    TextOut(hdc,280,0,_T("中文"),4); 
    这时候输出的就是希腊文。
      

  4.   

    不知道我的理解对不对,中文版系统使用ANSI字符集的时候,遇到双字符如果两个字符的最高二进制位是1,就会优先解释为汉字。