《Windows程序设计》读书笔记------------->>字符集和字体<<

看了很久也没有真正看懂这一节的内容,可能这一节的内容与我生活差距有点远。我连最基本的窗口还没怎么学呢,还考虑什么国际化的问题。倒是那几种字体(比如说等宽字体)在还不会算支付宽度之前还是很有用的。至少输出的时候会好看一些,也更像DOS时代那种排版:)

国际化的问题是说,在不同语言版本的WINDOWS操作系统中,一些字符不能很好的兼容,出现无法显示的情况。还有在一些通过输入法(比如说中文)进行输入的情形下,字符消息是没有办法取得正确的字符的。不仅如此,系统内定的几种字体在不同版本的windows操作系统中,显示得东东也是不同的。

不过,既然我不才,不会写这种国际化的软件,只要在中文版操作系统中不出问题这些东东以后再予理会好了。

字体设定

这里用到了一个函数,为了以后不同去翻书,还是当作笔记记录下来吧。

程序可以在CreateFont或者CreateFontIndirect函数呼叫中使用字体名称来指定字体。也可以将下面这些字体用GetStockObject函数改成句柄,选进设备内容句柄中。

GetStockObject标识符

字体名称

小字体文件

大字体文件

SYSTEM_FONT

System

VGASYS.FON

8514SYS.FON

SYSTEM_FIXED_FONT

FixedSys

VGAFIX.FON

8514FIX.FON

OEM_FIXED_FONT

Terminal

VGAOEM.FON

8514OEM.FON

在这个地方可以发现,所有的小字体都是以VGA的名字开头的,而大字体都是以8514开头的。VGA是什么意思想必大家都知道,8514其实和VGA是同类型的词,都是IBM弄的显卡的名字。看来IBM的影响无所不在呀。
CreateFont函数的用法如下:
HFONT CreateFont(
  
int  nHeight,                //  height of font
   int  nWidth,                 //  average character width
   int  nEscapement,            //  angle of escapement
   int  nOrientation,           //  base-line orientation angle
   int  fnWeight,               //  font weight
  DWORD fdwItalic,            //  italic attribute option
  DWORD fdwUnderline,         //  underline attribute option
  DWORD fdwStrikeOut,         //  strikeout attribute option
  DWORD fdwCharSet,           //  字符集ID
  DWORD fdwOutputPrecision,   //  output precision
  DWORD fdwClipPrecision,     //  clipping precision
  DWORD fdwQuality,           //  output quality
  DWORD fdwPitchAndFamily,    //  pitch and family
  LPCTSTR lpszFace            //  typeface name
);

CreateFontIndirect函数用法如下(其实这一个参数中就包含了上面那个函数的所有内容)

HFONT CreateFontIndirect(
  CONST LOGFONT
*  lplf    //  characteristics
);

使用这些函数之后就可以像使用画刷那样,选进设备内容句柄中实现功能了(同样在用完之后要删除)。

字符集在CreateFont函数的第九个参数中定义,他们的值如下:

#define ANSI_CHARSET

0

// 1252 Latin 1 (ANSI)

#define DEFAULT_CHARSET

1

 

#define SYMBOL_CHARSET

2

 

#define MAC_CHARSET

77

 

#define SHIFTJIS_CHARSET

128

// 932 (DBCS, 日本)

#define HANGEUL_CHARSET

129

// 949 (DBCS, 韩文)

#define HANGUL_CHARSET

129

// " "

#define JOHAB_CHARSET

130

// 1361 (DBCS, 韩文)

#define GB2312_CHARSET

134

// 936 (DBCS, 简体中文)

#define CHINESEBIG5_CHARSET

136

// 950 (DBCS, 繁体中文)

#define GREEK_CHARSET

161

// 1253希腊文

#define TURKISH_CHARSET

162

// 1254 Latin 5 (土耳其文)

#define VIETNAMESE_CHARSET

163

// 1258越南文

#define HEBREW_CHARSET

177

// 1255希伯来文

#define ARABIC_CHARSET

178

// 1256阿拉伯文

#define BALTIC_CHARSET

186

// 1257波罗的海字集

#define RUSSIAN_CHARSET

204

// 1251俄文 (斯拉夫语系)

#define THAI_CHARSET

222

// 874泰文

#define EASTEUROPE_CHARSET

238

// 1250 Latin 2 (中欧语系)

#define OEM_CHARSET

255

// 地区自订

而因为这些麻烦似乎还不会遇到,而且输入文字的问题又不可能通过改改字符集就能解决的,而显示中文的问题好像还没有遇到不可以。做个记录就好。。。。(又偷懒了:(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值