送给初学者的礼物C++游戏编程起源连载三.pdf
上传人:qw****27 上传时间:2024-09-12 格式:PDF 页数:50 大小:495KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

送给初学者的礼物C++游戏编程起源连载三.pdf

送给初学者的礼物C++游戏编程起源连载三.pdf

预览

免费试读已结束,剩余 40 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

上学吧(www.shangxueba.com)送给初学者的礼物:C++游戏编程起源连载三第三章跟踪你的窗口和使用GDI简介如果你看过了头两篇连载,这次我们将学习WINDOWSGDI(图形设备接口)和其它一些相关的东西,象响应用户输入和处理Windows产生的一些消息。至于显示图形,我们将接触三个课题:文本显示,绘制象素,显示位图。我们先来研究一下几个Windows消息的细节。重复的话:你需要C语言的基础知识,最好看过上两章。由于本章将使你能做一个具体的图形DEMO,有一个源代码例程附在本章后面。是用VisualC++写的和编译的。在连载一里,我们创建和注册了一个窗口类,其中有一行定义了窗口的风格(功能),是这个样子:sampleClass.style=CS_DBLCLKS|CS_OWNDC|CS_HREDRAW|CS_VREDRAW;//standardsettings其中三个属性是很一般的,但这个——CS_OWNDC,需要解释一下。设备上下文是一个结构,是一个表现一组图形对象和属性的结构,还有一些输出设备的设置和属性。使用设备上下文允许你直接操纵图形,,上学吧为您提供“计算机等级考试”复习资料下载:http://www.shangxueba.com/share/s23.html上学吧(www.shangxueba.com)不用考虑低级细节。WindowsGDI是一个图形翻译系统,是介于应用程序和图形硬件之间的一层。GDI可以输出到任意的兼容设备,不过最常使用的设备是视频监视器、图形硬拷贝设备(如打印机或绘图仪),或者是内存中的图元文本。GDI函数能够绘制直线、曲线、封闭的图形和文本。所有访问GDI的Windows函数都需要一个设备上下文句柄作为参数。这是非常容易做到的。你若想得到一个窗口的设备上下文句柄,你可以用这个函数:HDCGetDC(HWNDhWnd//handletoawindow);很简单,所有你做的是,把要操作的窗口的句柄传递给它,然后返回一个设备上下文句柄。如果你传递的是NULL,将返回整个屏幕的设备上下文(DC,以后都用DC表示)句柄。如果函数调用失败,将返回NULL。处理显示图形的DC类型,称作显示DC,处理打印的,称作打印DC;处理位图数据的,称作内存DC,还有其它一些设备DC。感觉有点复杂吧,不要紧,这是Windows,它的主要功能就是迷惑群众。一旦,上学吧为您提供“计算机等级考试”复习资料下载:http://www.shangxueba.com/share/s23.html上学吧(www.shangxueba.com)我们接触一些代码,就不会觉得难了。当你结束使用DC时,一定要释放它,也就是释放它占用的内存空间。要把这种思想贯穿到以后的编程中去,占用了内存,不用时要释放,切记!释放DC是一个很简单的函数:intReleaseDC(HWNDhWnd,//handletowindowHDChDC//handletodevicecontext);若成功释放,返回值是1,否则是0。参数有注释,我还是说一下:※HWNDhWnd:你所要控制的那个窗口的句柄。如果你开始传递的是NULL,现在还要传递NULL。※HDChDC:DC的句柄。在用DC和GDI进行图形显示前,我们先看看创建窗口实例时要遇到的几条重要的消息。我将要提到的四条消息是:WM_MOVE、,上学吧为您提供“计算机等级考试”复习资料下载:http://www.shangxueba.com/share/s23.html上学吧(www.shangxueba.com)WM_SIZE、WM_ACTIVATE、WM_PAINT。追踪窗口状态头两个是很简单的。当窗口被用户移动时将发送WM_MOVE消息,窗口新位置的坐标储存在lparam中。(还记得吗,消息在lparam和wparam中被进一步描述,它们是消息控制函数的参数)lparam的低端字中存储窗口客户区左上角的坐标x,高端字中存储坐标y。当窗口的大小被改变时,将发送WM_SIZE消息。同WM_MOVE消息差不多,lparam的低端字中存储客户区的宽度,高端字存储高度。同WM_MOVE不同的是,wparam参数也控制了一些重要的东西。它可以是下列中任意一个值:※SIZE_MAXHIDE:其它的窗口被最大化了。※SIZE_MAXIMIZED:本窗口被最大化了。※SIZE_MAXSHO