第三节 设计输出及利用在线帮助
在Windows中,消息ON_PAINT是专门用来处理输出的。基本所有的输出代码应放在这里。
。其输出方式不再限于从上往下,而是全屏可控,因此每个输出都需要告知系统输出位置。典型的文字输出代码是TextOut函数。
将WM_PAINT消息处理的内容保留BeginPaint和EndPaint函数调用,删除其他内容,用图中的内容替代。可以发现屏幕输出的内容改变了。TextOut函数使用一个叫做HDC类型的变量hdc,HDC叫做输出设备句柄,可以理解为一个结构体指针,在BeginPaint函数中被指向当前显示屏有关结构,而在EndPaint函数中释放这个指针的关联(即EndPaint函数之后,该句柄就不能被使用了)。其所指向的内容存储了和输出有关的默认属性。例如,隐含的属性包括用什么字体,用几号字,采用字体的颜色等。其后两个参数是屏幕坐标,屏幕坐标以像素为单位,左上角为0,0点。最后两个参数是待输出字符串的地址和字符串长度。
若要修改默认属性,例如使用一种新的字体如楷书,并且调整字体的大小——即变更字号,更换字体的颜色怎么办呢?Windows使用一组相关函数更改属性,例如SetTextColor函数将字体颜色设置为新的颜色,同时返回原先使用的颜色。当然在画图工作完毕后,应将字体颜色设置回原先的颜色,以免破坏其他程序的文字输出行为。SetTextColor函数具体使用可见后面的例子。
当用户希望显示魏碑字体而不是系统默认的新宋体时,则过程略微复杂一些。字体有大小和是否粗体和下划线等属性,画刷有颜色属性和贴图属性,画笔有颜色和粗细以及画实线还是虚线等属性,这样一些复杂的对象被称为GDI对象。当用户打算使用自定义的GDI对象时,可以使用各自的