在写Windows程序设计的Typer程序时,我并不是在每一个使用HDC的地方都重新创建选中字体,而是在一开始选中之后,就没有再删除它,代码如图:
结果我的字体不是等宽字体!
起先我以为是没有设置WM_INPUTLANGCHANGE消息的原因,因为有可能设置了这个消息之后,程序就可以接收到输入法的改变,就可以改变字符集,并且又不是所有的字符集都有等宽字体,所以可能是输入法的缘故,但后来测试了示例程序之后,发现他的程序在这个输入法下可以良好工作。
这时候突然想到了书上好像曾经看过一个点,说的是GDI环境在释放后,所有的环境变量都会回归默认(好像是必须设置一个属性才能改变,但我记不大清是哪个属性了)。
所以这正是我的字体是变宽的原因。