博文

游戏编程起源(初学者)Ⅵ (一)(2006-01-28 12:10:00)

摘要:☆ 关闭你的应用程序(关闭窗口)

有三个消息看起来差不多,都是处理关闭的事情的。它们是WM_DESTROY,WM_CLOSE,和WM_QUIT。它们的确很相似,但你需要知道它们之间的不同!一个窗口或者应用程序应该被关闭时发出WM_CLOSE消息,当接收到WM_CLOSE消息时,如果你愿意,向用户提出是否真的退出。你知道让用户作确认或有错误出现或有什么应该注意的事情发生的时候,往往弹出一个消息框。消息框的制作是很容易的,由于它用途广泛,我们还是介绍一下:

int MessageBox(
    HWND hWnd,         // handle of owner window
    LPCTSTR lpText,    // address of text in message box
    LPCTSTR lpCaption, // address of title of message box
    UINT uType         // style of message box
);

这些参数,尤其是最后一个,需要一些解释:
※ HWND hWnd:过一会儿我将向你介绍一个不含有它的函数,我保证。
※ LPCTSTR lpText:这是将要显示在消息框里的文本。你可以用\n等调整一下格式。
※ LPCCTSTR lpCaption:这是显示在消息框标题栏里的文本。
※ UINT uType:这个参数可以联合使用几个不同的标记。这些标记可以根据你的目的选择,有好多MB_打头的标记供你选择,联合使用时要用“|”分隔开。下面列出了一些常用的:

……按钮类
◎ MB_ABORTRETRYIGNORE:建立有“Abort”、“Retry”、“Ignore”按钮的消息框。
◎ MB_OK:建立有“OK”按钮的消息框。
◎ MB_......

阅读全文(2809) | 评论:0

游戏编程起源(初学者)Ⅴ(2006-01-26 12:37:00)

摘要:★第三章 跟踪你的窗口和使用GDI

☆ 简介
如果你看过了头两章,你或许已经在问我什么时候能给你讲一点有成就感的东东呢?OK,时候到了。这次我们将学习WINDOWS GDI(图形设备接口)和其它一些相关的东西,象响应用户输入和处理Windows产生的一些消息。至于显示图形,我们将接触三个课题:文本显示,绘制象素,显示位图。我们先来研究一下几个Windows消息的细节。
重复的话:你需要C语言的基础知识,最好看过上两章。由于本章将使你能做一个具体的图形DEMO,有一个源代码例程附在本章后面。是用Visual C++写的和编译的,所以吗,最好同我保持一致哦!好了,开动吧!

☆ 设备上下文
在第一章里,我们创建和注册了一个窗口类,其中有一行定义了窗口的风格(功能),是这个样子:

sampleClass.style = CS_DBLCLKS | CS_OWNDC | CS_HREDRAW | CS_VREDRAW; // standard settings

其中三个属性是很一般的,但这个——CS_OWNDC,需要解释一下。如果你记得,我曾经告诉过你这个属性允许窗口有自己独特的设备上下文,但直到现在,我们还没有具体的讲,OK,时间到了,开讲!
设备上下文是一个结构,是一个表现一组图形对象和属性的结构,还有一些输出设备的设置和属性。使用设备上下文允许你直接操纵图形,不用考虑低级细节。Windows GDI是一个图形翻译系统,是介于应用程序和图形硬件之间的一层。GDI可以输出到任意的兼容设备,不过最常使用的设备是视频监视器、图形硬拷贝设备(如打印机或绘图仪),或者是内存中的图元文本。GDI函数能够绘制直线、曲线、封闭的图形和文本。所有访问GDI的Windows函数都需要一个设备上下文句柄作为参数。感谢上帝,这是非常容易做到的。你若想得到一个窗口的设备上下文句柄,你可以用这个函数:

HDC GetDC(
    HWND hWnd  // handle to a window
);

很简单,是不是?所有你做的是,把要操作的窗口的句柄传递给它,然后返回一个设备上下文句柄。如果你传递的是NULL,将返回整个屏幕的设备上下文(DC......

阅读全文(3412) | 评论:0

游戏编程起源(初学者)Ⅳ(2006-01-26 12:35:00)

摘要:☆ 字符串表

字符串表是我最喜欢的资源类型。正象你所想的:一个充满字符串的庞大表格。字符串表有很多用处。你可以用它存储你的文件名称,游戏中的人物对话,消息框中的文本,菜单中的文本等等。在资源脚本里建立一个字符串表很容易,就像这样:

STRINGTABLE
{
    // entries go here
}

一个字符串表由几部分组成:一个标识字符串的数字;紧跟着一个逗号;然后是加了双引号的字符串本身。字符串表里的字符串被允许使用溢出符号,如
或 。注意,字符串表本身并没有标识符,所以每个程序只能有一个字符串表。一个简单的字符串表可能象下面这个样子:

// program information
STRINGTABLE
{
    1, "3D Space Game v1.0"
    2, "Written by The Masked Coder"
    3, "(C) 2000 WienerDog Software"
} 从程序的字符串表里调用字符串,将使用——你可能猜到了——LoadString()函数。这是它的原形:

int LoadString(
    HINSTANCE hInstance, // handle to module containing string resource
    UINT uID,            // resource identifier
    LPTSTR lpBuffer,     // pointer to buffer for resource
    int nBufferMax       // siz......

阅读全文(2753) | 评论:0

游戏编程起源(初学者)Ⅲ(2006-01-25 16:01:00)

摘要:★ 第二章 使用Win32程序资源

☆ 简介
欢迎继续收看!通过本章题目可能你已经猜出了本章论题,我将教会你在Windows程序中使用资源。简单的讲,资源即数据,它们通常是和程序的EXE文件相关联的,但是它们又是独一无二的。首先,资源在运行过程中不能被修改。它们实际上都是只读文件,而且程序代码不能够直接访问它们。另外,资源并不在程序的数据区内。在装入时,程序资源通常在某个磁盘文件中,直到程序需要它们时才被装入。使用资源是一件很容易的事情,并且它的妙处无穷。Windows为我们提供了大量的资源类型,但我们这里只学一些最常用,最容易的:图标(icon)、光标(cursor)、位图(bitmap)、菜单(menu)和字符串(string)。此后,我还将教你建立自己风格类型的资源,使你为所欲为。(好像挺诱人哦!)
重复一下,要想看懂本章,你得有点C语言的基础。C++有时用一用,但不影响你学习本章内容。并且我假定你已经读过了上一章内容“Windows编程基础”。我还是用Microsoft Visual C++的编译器,怎么样?出发吧!

☆ 资源脚本
在进行细节之前,我们要先搞懂怎样要编译器知道它所要编译的资源类型。方法是使用称之为资源脚本的特殊文件,它是一个简单的文本文件,可以手工编辑,也可以让Visual C++自动编辑,或者你用其它的自动编辑器编辑。无论如何,资源脚本文件要有一个.rc的扩展名。大多数的脚本文件都从定义资源行开始,最简单的资源行通常要用到资源类型,就像这样:

 [identifier]  [resource type]   [filename]
【标识符】 【资源类型】 【文件名称】

标识符可以用两种方式表示:一种是能表示资源意思的字符串,另一种是在资源相对应的头文件中用#define定义过的数字常量。如果你选择数字常量,这通常是一个好主意,别忘了把相应的头文件加入到你的资源脚本。资源脚本使用C语言风格的文件格式好像比较容易理解。以下是一个比较简单的资源脚本实例:

#include "resource.h" // icons
ICON_MAIN ICON myicon.ico // bitmaps
IMG_T......

阅读全文(2666) | 评论:0

游戏编程起源(初学者)Ⅱ(2006-01-25 15:59:00)

摘要:☆ 创建窗口

好消息,创建窗口你所要做的只是调用一个CreateWindowEx()函数。坏消息是,这个函数有好多的参数。嘿!把刀放下,有话好说吗!真的不难,做事情总得走走形式嘛!以下是函数原形:

HWND CreateWindowEx(
        DWORD dwExStyle, // extended window style
        LPCTSTR lpClassName, // pointer to registered class name
        LPCTSTR lpWindowName, // pointer to window name
        DWORD dwStyle, // window style
        int x, // horizontal position of window
        int y, // vertical position of window
        int nWidth, // window width
        int nHeight, // window height
        HWND hWndParent, // handle to parent or owner window
        HMENU hMenu, // handle to menu, or chil......

阅读全文(2989) | 评论:0

游戏编程起源(初学者)Ⅰ(2006-01-25 15:56:00)

摘要:前言         这是一部非常棒的初学者入门游戏编程教材。虽然目前3D游戏大行其道,但是对于想急切入门的初学者来说2D游戏的编程是最好的开始,因为它屏蔽了繁杂的数学理论,同时又给于了初学者一些游戏编程的概念。当然如果你选择3D游戏开发为起步,那也不是一件坏事。就像初学C语言和C++语言时的选择一样。开始学习这游戏编程教材前,首先得学会C++/C的一些必要语句用法,对编程语言的熟练程度直接影响到你写出的代码的质量。         你还在用TC么?那么请你马上仍掉它吧,现在开始下面的教材里都是在VC中编写和编译的。如果你对VC很陌生,没关系它很友善,而且你也只需知道一点小小的操作即可以开始你的游戏编程之旅。在此祝你旅途愉快。 原著作者的邮箱:ironblayde@aeon-software.com 要用英文给作者发信哦!
原著作者的ICQ:53210499
【译:傻马乱踢:howsee@163.com】
【水平有限,诚心一片◆傻马乱踢】
  ★第一章 Windows编程基础

☆ 简介
本章目的是介绍WINDOWS编程基础。在本章结束时,你应该能够很好的工作了,虽燃可能是简单的WINDOWS程序。你需要有C语言的基础知识,我很少将C++的代码扩充到程序中。当然,由于WINDOWS本身就是面向对象的,一点类的知识是不会对你有什么损害的。如果你不熟悉C++,没有关系,我想你还是能从我这里学到大部分的东西。所有的程序代码都通过了MICROSOFT VISUAL C++6.0的编译,如果你还没有合适的编译器,弄一个同我一样的好了,它还是很棒的。开动吧!
☆ 开始
多数的Windows程序都需要Windows.h和Windowsx.h这两个头文件,要确保使用它们。当然,你还需要其它的标准的C的头文件,象stdio.h,conio.h等。除了这些,你还会经常看到在程序的开始有这样一行代码:
#define WIN32_LEANAND_MEAN
它表示Windows的头文件中将拒绝接受MFC的东西,这将加速你的build时间。如果你从没有打算应用MFC在......

阅读全文(4331) | 评论:6