简单来说,LPCTSTR 就表示字符串指针。
那么和 char* 又有什么区别呢?
大家用 char 表示字符时,英文占用一个字节,中文站用两个字节。这样有一个严重的问题:两个字节,究竟是两个英文字符,还是一个中文字符?为了解决这个问题,unicode 编码诞生了。
常见的 unicode 编码不管中文英文都用两个字节表示,用 wchar_t 来定义。
为了让代码适应 char 和 wchar_t 两种情况,可以用 TCHAR 宏,这个宏当项目定义为 unicode 时表示 wchar_t,否则表示 char。
对应的,还有 _T("") 宏用来表示字符串,例如 _T("abc") 在项目为 unicode 时表示 L"abc",否则表示 "abc"。
然后再看 LPCTSTR,它是以下几个概念的缩写:Long Point Const Tchar STRing,这样意思就明确了吧。
目前,点 EasyX 绘图窗口的“关闭”,会直接退出整个程序。有时候,程序需要执行完整的流程,因此,禁止关闭按钮就是一个很需要的方法。
可以通过 initgraph 函数的第三个参数禁用关闭按钮,确保程序按实际流程完整执行。
以下代码禁用关闭按钮(VC6 / VC2010 编译通过):
#include <graphics.h>
#include <conio.h>
void main()
{
initgraph(640, 480, NOCLOSE);
circle(320, 240, 100);
_getch();
closegraph();
}
关于什么是 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
《将 mp3 以资源形式嵌入 exe
...
从 C 语言,到常见的 setup.exe 安装程序,究竟有多远?怎样实现双击 .xls 文件会自动启动 excel 并加载?这篇文章就解释这个问题。
请跟随以下步骤:
编写应用程序。为了叙述方便,暂且叫 test.exe 吧。通常 test.exe 中会用若干 scanf 或 cin 来读取用户输入的参数,并根据参数来执行程序,这是大家在学习 C 语言的过程中见到的。
要规定程序所需数据的格式。例如,word 需要使用 .doc 格式的数据,photoshop 需要使用 .psd 格式的数据。不管这些数据文件是文本的还是二进制的,只有格式确定下来,程序才能按照原定意图解释数据。数据格式就是将用户输入的全部数据都放进一个文件中,然后将 scanf 语句修改为读取该文件(读文件的程序部分请参考相关书籍)。
设置文件关联。在上一步我们规定了一个我们需要的数据格式,现在给这个格式的文件自定一个扩展名,比如叫 .abc,然后双击该文件,Windows 会提示用户选择打开该类型
...
本文适用读者:已经学完 C 语言基本知识,并对 EasyX 略有了解。
本文范例实现的功能:文字在背景上移动,并且不破坏背景。
本文范例编译平台:VC6 / VC2010 + EasyX 20140321(beta)。
本文并不直接写出最终代码,而是从最开始绘制背景,一步步拓展到我们需要的功能。希望这个过程能对初学者有所启发。
一、绘制背景
为了实现文字移动而不破坏背景的效果,我们先画个背景。做法很简单,就是画一连串的竖线,并且每次变换颜色,这样就能弄一个渐变色的背景,代码如下:
#include <graphics.h>
#include <conio.h>
// 主函数
void main()
{
// 创建绘图窗口
initgraph(640, 480);
// 绘制背景
for(int i = 0; i < 640; i++)
{
setlinecolor(i);
line(i,
...
在 Turbo C 时代的图形编程有“调色板”的概念,但在真彩色时代,调色板的概念已经不完全相同了。
EasyX 模拟了 Turbo C 的大部分功能。由于上述原因,调色板并没有实现。如果要使用调色板,可以通过 Windows GDI 函数实现。
以下范例程序演示了这一过程:
(由于是动画程序,贴图无法展现效果,因此省略了贴图)
///////////////////////////////////////////////////
// 程序名称:基于 EasyX 的调色板动画程序
// 编译环境:VC6.0 / VC2010,EasyX 2011惊蛰版
// 作 者:krissi <zh@easyx.cn>
// 最后修改:2012-1-4
//
#include <graphics.h>
#include <conio.h>
#include <math.h>
#define WIDTH 640
#define
...
先说一个程序的实现过程:
- 随机生成 3 个点 P[0]、P[1]、P[2];
- 随机生成 1 个点 P;
- 绘制点 P;
- 随机生成 [0, 2] 内的整数 n;
- 令 P = P 与 P[n] 的中点;
- 重复执行步骤 3~5 三万次。
这个程序很简单,虽然随机性很大,但是结果几乎是完全相似的,会是一个很有趣的图案,也就是传说中的谢宾斯基三角形。以上步骤就是生成谢宾斯基三角形的随机迭代法。
程序代码如下:
(注:为了效果,将步骤(1)的三个点手动指定了。喜欢的话,可以将其修改为随机产生)。
// 程序名称:谢宾斯基(Sierpinski)三角形,也叫垫片
// 编译环境:Visual C++ 6.0,EasyX 2011惊蛰版
// 最后更新:2010-11-16
//
#include <graphics.h>
#include <
...