FASM---Win32汇编学习4
第四课----绘制文本串
本课中,我们将学习如何在窗口的客户区“绘制”字符串。我们还将学习“设备环境”的概念。
Windows中的文本是一个GUI(图形用户界面)对象。每一个字符实际上由许多像素点组成,这些点在有笔画的地方显示出来,这样就会出现字符。这也是为什么我说“绘制”字符,而不是写字符。通常您都是在您应用程序的“客户区”绘制字符串(尽管在客户区外也可以“绘制”)。Windows下的"绘制"字符串方法和Dos下的截然不同,在Dos下你可以把屏幕想成是85*25的平面,而在windows下由于屏幕上同时由几个应用程序的画面,所以您必须遵守相应的规范。Windows通过把每一个应用程序限制在它的客户区来做到这一点。当然客户区的大小是可变的,您可以随时调整。
提示:客户区是指我们窗体与用户交互的部分。打个比方,比如我们windows 的notepad记事本程序的客户区就是它的编辑框. 非客户区则是指它的标题栏和菜单栏以及滚动条。
在您在客户区“绘制”字符串前,你必须从Windows那里获取客户区的大小。确实你无法像在dos下那样随心所欲的在任何地方绘制,绘制前你必须得到Windows的允许,然后windows会告诉你客户区的大小,字体,颜色以及其他的gui对象属性。您可以用这些来“绘制”。
什么是"设备环境(DC)"呢,它其实是由windows内部维护的一个数据结构。一个设备环境与一个特定的设备相连。像打印机和显示器。对于显示器来说,"设备环境"和一个个特定的窗口相连。
“设备环境”中有些属性和绘图有关,像颜色,字体等。您可以随时的改动那些缺省值。之所有保存那些缺省值是因为为了方便。您可以把设备环境想成是Windows提供给你的绘图环境。而你可以随时根据需要改变那些缺省值。
在应用程序需要绘制时,您必须得到一个“设备环境”的句柄。通常有几种方法。
1.在WM_PAINT消息中使用call BeginPaint
2.在其他消息中使用call GetDC
3.Call createDC 建立你自己的DC
您必须牢记的是,在处理单个消息后,你必须释放“设备环境”的句柄。不要在一个消息中获得设备环境的句柄,而在另一个消息中释放它。