Krissi

Short description of the space

初学者必读:讲解 VC 下如何正确的创建及管理项目

本文讲解 Visual C++ 的项目文件组成,以及如何正确的创建及管理项目。

本文所设计的内容是初学者必须要掌握的。不能正确的管理项目,就不能进一步写有规模的程序。

一、项目下各种常见文件类型的作用

1. 代码文件

扩展名为 .cpp、.c、.h 等。

通常情况下,项目会由多个代码文件和头文件组成,每个文件实现不同的功能。

2. 资源文件

扩展名为 .rc 。

资源文件中定义了项目中所需的各种资源,例如图片、图标、对话框、声音等。项目中的资源引用情况均会记录在其中。有些资源会完整的记录在 .rc 里面,有些资源仅仅在 .rc 里面记录一个链接。

3. 项目管理文件

扩展名在不同版本的 VC 下有区别:VC6 为 .dsp,VC2008 / VC2010 为 .vcproj,VC2012 为 .vcxproj 。

项目管理文件管理所有代码、资源文件以及项目设置。

4. 工作区管理文件

...

正确处理鼠标消息(解决鼠标操作不灵敏的问题)

本文讲解怎样处理鼠标消息。编程思路有很多种,本文只是提供一种思路,并非一定要照这么做。

通常写小游戏时,很多人会有一个主循环,类似这样:

while(true)
{
	获取用户控制();

	进行游戏运算();

	绘制游戏内容();

	Sleep(xx);
}

当添加鼠标操作时,会这样写(错误代码):

// 定义变量,保存鼠标消息
MOUSEMSG msg;

// 游戏的主循环
while(true)
{
	if (MouseHit())				// 当有鼠标消息的时候执行
	{
		msg = GetMouseMsg();	// 获取鼠标消息

		switch(msg.uMsg)		// 根据不同的鼠标消息,执行不同的代码
		{
			case xxxx: 进行游戏运算(); break;
			case xxxx: 进行游戏运算
...

禁用 EasyX 绘图窗口关闭按钮的方法(控制程序流程)

目前,点 EasyX 绘图窗口的“关闭”,会直接退出整个程序。有时候,程序需要执行完整的流程,因此,禁止关闭按钮就是一个很需要的方法。

可以通过 initgraph 函数的第三个参数禁用关闭按钮,确保程序按实际流程完整执行。

以下代码禁用关闭按钮(VC6 / VC2010 编译通过):

#include <graphics.h>
#include <conio.h>

void main()
{
	initgraph(640, 480, NOCLOSE);

	circle(320, 240, 100);
	
	_getch();
	closegraph();
}

修改 VC 生成的 EXE 文件的图标

Visual C++ 的控制台项目默认生成的 exe 图标很大众,本文讲解怎样修改 exe 文件的图标。

注:Visual C++ Express(学习版)不支持资源编辑,无法创建资源文件,也就无法添加图标资源。

基础知识

图标属于”资源“,需要依附在资源文件中。

如果创建的项目类型是 Win32 Application 并且不是空项目,那么项目中默认是有资源文件的。否则,就需要先创建资源文件,再添加图标资源。

步骤一:添加资源文件

首先,检查一下项目中是否存在资源文件。资源文件的扩展名是 .rc,如果你的项目名称为 test,通常资源文件的文件名为 test.rc。如果项目中存在资源文件,就不用再添加了,直接进行步骤二。

如果没有资源文件,请按照以下方法添加:

Visual C++ 6.0 这样做:

  1. 点菜单:File -> New...,选择 Files 中的 Resou
...

在游戏中使用 midi 音乐文件

关于什么是 midi 音乐文件,请参考百度百科:http://baike.baidu.com/view/7969.htm 。

这里简单说一说:

midi 是一种音乐文件,通常扩展名为 mid。不同于 mp3 的地方是:mp3 保存的是声音的波形数据,而 mid 保存的是乐器、音符、音调等。所以从文件体积上来说,mp3 的体积是 mid 体积的几十倍甚至上百倍。

鉴于 midi 的特点,早期很多游戏的都使用 midi 音乐。所以,本文讲怎样使用 midi 音乐。

【1. 素材获取】

网上搜索吧,网上有很多 mid 资源。但是不要尝试将 mp3 转换为 mid,由于原理不同,暂时无法实现 mp3 -> mid 的转换。

【2. 播放】

能播放 mp3 的方法,一般都可以用来播放 mid。所以,可以参考这些文章:

《在游戏中播放音乐》 http://www.easyx.cn/skills/View.aspx?id=44

...

TC 中的 bioskey() 函数在 VC 中用什么代替?

bioskey() 函数需要引用头文件 bios.h,这个头文件在 VC 中默认是没有的,将其引用 #include <bios.h> 删掉即可。

功能上,bioskey 可以实现以下三个功能:

1. bioskey(0): 返回用户按键。

如果返回值的低 8 位非 0,该值表示按键的 ASCII 码;

如果返回值的低 8 位为 0,该值表示按键的键码。

作为替代,VC 中可以使用 getch() 返回用户按键。对于功能键(如光标键),getch() 需要调用两次,第一次返回 0 或 0xE0,第二次返回键码。

详见:http://msdn.microsoft.com/en-us/library/078sfkak(v=VS.80).aspx

2. bioskey(1): 返回是否有按键发生。

如果没有按键,返回 0;

如果有按键,返回该按键值。(该按键仍然保留)

作为替代,VC 中可以使用 kbhit() 返回

...

学习编写一个完整的 Windows 应用程序

从 C 语言,到常见的 setup.exe 安装程序,究竟有多远?怎样实现双击 .xls 文件会自动启动 excel 并加载?这篇文章就解释这个问题。

请跟随以下步骤:

1. 编写应用程序。为了叙述方便,暂且叫 test.exe 吧。通常 test.exe 中会用若干 scanf 或 cin 来读取用户输入的参数,并根据参数来执行程序,这是大家在学习 C 语言的过程中见到的。

2. 要规定程序所需数据的格式。例如,word 需要使用 .doc 格式的数据,photoshop 需要使用 .psd 格式的数据。不管这些数据文件是文本的还是二进制的,只有格式确定下来,程序才能按照原定意图解释数据。数据格式就是将用户输入的全部数据都放进一个文件中,然后将 scanf 语句修改为读取该文件(读文件的程序部分请参考相关书籍)。

3. 设置文件关联。在上一步我们规定了一个我们需要的数据格式,现在给这个格式的文件自定一个扩展名,比如叫 .abc,然后双击该文件,Windows 会提示用户选择打开该类型的程序,我们选择步骤 1 编写的

...