在 EasyX 中使用外部字体文件设置字体样式 铜牌收录

在 EasyX 输出字体的时候,要求字体在当前环境中可用,否则就无法看到字体的效果。使用系统中默认存在的字体比较简单,可以直接使用。但是如果字体是自己精心挑选的,系统中不存在,将程序发给别人以后,要求别人安装字体才能启动程序看到效果,就不太合适了。本文详细讲述在不安装字体的前提下如何通过字体文件设置字体样式。

解决编译错误:C4996:'GetMouseMsg': This function is deprecated. 铜牌收录

问题概述

EasyX 提供了两个头文件:

  • graphics.h
  • easyx.h

easyx.h 包含最新的函数,并且删掉了旧函数。graphics.h 引用了 easyx.h,同时提供了对旧函数的支持。使用 graphics.h 里面提供的旧函数时,会收到一个 Warning C4996,例如使用旧函数 GetMouseMsg,会收到编译提醒:

C4996:'GetMouseMsg': This function is deprecated. Instead, use this new function: getmessage. See https://docs.easyx.cn/getmessage for details.

在过去,Visual C++ 默认会将 C4996 归类为 Wa

...

VS 中的生成事件 铜牌收录

项目发布的时候,经常需要执行一些额外的操作。本文讲述如何将这类操作流程化,只要每次编译,就可以执行一些固定的发布操作。这样,既可以减轻工作量,又可以防止反复人工操作带来的疏忽,确保发布操作正确、稳定且方便。

正确的提问方式 铜牌收录

网络是一个很好的交流学习平台,但是有些同学比较郁闷:为什么自己在网上发的问题没人帮自己呢?这多半原因是因为这些同学“不会提问”。本文就简单说一下,应该如何提问。

C/C++ 内功心法(入门篇)- 第一章 绪论(5,6) 铜牌收录

返回:C/C++ 内功心法(入门篇)- 目录

5. 寓教于乐

初学编程,更多的是锻炼逻辑思考能力。这里列出几个锻炼逻辑思维的小游戏,空闲的时候可以试试:

  1. 扫雷(推荐 Win10 商店里的版本)
  2. 人力资源机器(PC 版本或安卓版本都可以)

这里就不提供下载了,自己想办法吧,这是学编程之前的基本能力。

6. 学习环境的配置

为了跟随本书学习编程,请按照以下要求配置学习环境:

  1. 使用 Win10 系统,并设置为英文。如果计算机配置不高,可以考虑使用 Win7 或 WinXP 系统。
  2. 设置 Win10 系统显示文件的扩展名。
  3. 安装英文版的 Visual C++ 2010 学习版(英文版名称为 Visual C++ 2010 Express)。
    下载地址:https://pan.baidu.com/s/1kFb9X-1HV8HRyE
...

C/C++ 内功心法(入门篇)- 第一章 绪论(4) 铜牌收录

返回:C/C++ 内功心法(入门篇)- 目录

4. 解惑

编程的前景及就业情况如何?

以计算机程序控制机器替代人力劳动,是大势所趋。

20 年前,学了驾照就可以弄辆出租车养家糊口。现在,手机约车逐步在取代传统的出租车,甚至共享汽车在很多地方都开始普及。再过几年,自动驾驶会取代出租车司机、公交车司机……

计算机种植,精确控制植物所需环境及养分。

计算机诊断病情,甚至实施精确手术。

计算机清洁,自动定期清扫城市街道、住宅小区等。

计算机实现自动实时翻译。

计算机实现自动配药。

计算机实现自动采摘……

这就是趋势,没什么需要担心的。

学编程是否需要天赋?

一句话解释:以大多数人的努力程度之低,根本轮不到拼天赋。

举个例子,一个女生每天出门需要化妆 5 分钟(够神速了吧)。

别人的学习时间是每天 500 分钟(8 小

...

C/C++ 内功心法(入门篇)- 第一章 绪论(3) 铜牌收录

返回:C/C++ 内功心法(入门篇)- 目录

3. 学习编程的预备知识

编程是一项有一定门槛的知识,在对计算机的软硬件不够了解的前提下学习编程,会事倍功半。因此,在开始正式讲编程知识之前,本节课先提一些基础要求。

上网

基于网络的 QQ 聊天、淘宝购物、支付宝付款等等,不再多说。着重说这几点:

  1. 百度搜索。常规内容的搜索都离不开百度。但是,要学会鉴别搜索结果中的广告与垃圾。

  2. 必应搜索。在全球范围内检索资料的不二选择,尤其是在英文网站检索编程相关问题,更是离不开必应搜索。

  3. 学会搜索“官方网站”。网上各种资料有真有假有新有旧,最靠谱的,是官方网站的资讯。比如要下载 EasyX ,比较推荐的做法是搜索“EasyX 官网”,然后在官网里面找到所需的下载。

  4. 学会鉴别“官方网站”。并不是所有搜到的“官网”都是官方网站。网络中有各种钓鱼网站,做的很

...

C/C++ 内功心法(入门篇)- 第一章 绪论(1,2) 铜牌收录

返回:C/C++ 内功心法(入门篇)- 目录

1. C/C++ 的历史及特点

有关计算机的历史、C 语言的历史、C++ 的历史,以及各自有什么特点,甚至哪年谁谁谁发明了什么等等,请自行网上搜索。

2. 编程思维

乔布斯说过:“每个人都应该学习编程,因为它会教给你如何思考。”

从厨神的故事开始

我相信每个人对“编程”这个词都有自己的认识。我从一个小故事说起吧。

有个厨神,开了一下小饭店,人们非常喜欢吃他做的菜。

但是厨神也有累的时候,也有生病的时候,也有带着孩子出去玩的时候,这时候虽然有其他厨师烧菜,但顾客的满意度会下降。并且大厨也没有三头六臂,饭店的规模始终无法扩大。

所幸厨神的孩子是学编程的,给支了这么一招:让厨神将菜谱全部写出来,调料全部量化,炒菜过程标准化,整理出一份“超级菜谱”。这样,其他厨师按照这个“超级菜谱”烧的菜,能达到厨神的九成水准,这已经能满足绝大多数顾客的口味了。

然后饭店继续招聘厨师,以这个“超级菜谱”培训新

...

C/C++ 内功心法(入门篇)- 目录 铜牌收录

返回:C/C++ 内功心法(入门篇)- 目录

C/C++内功心法(入门篇)- 目录

前言

这是一本学习编程的书。

注意,本书学习的是编程,不是 C/C++ 语法,不是 Linux 使用,不是怎样配置编译器,不是学习 C/C++ 标准。我们学习的,只是编程。之所以先强调这点,是因为目前许多同学学习编程的时候,方向都偏了。如果你学习编程学了很久都不得门而入,不妨看看本书。

本书会根据读者的反馈一直在线更新。所以,谢绝转载,没有意义,反倒会给网络留下许多内容陈旧的垃圾。

如果你有更好的建议,欢迎分享给我 yw80@qq.com。

如果你觉得写的还不错,可以通过捐助鼓励下我们:https://go.easyx.cn/donate。

目录

第一章 绪论

1. C/C++ 的历史及特点

2. 编程思维

3. 学习编程的预备知识

4. 解惑

...

VC绘图/游戏简易教程--16:设备上下文句柄(Windows 编程入门2) 铜牌收录

教程总目录:https://codebus.cn/bestans/post/concise-lesson-contents(里面包括VC下的graphics.h的配置方法)

注:学习本节前,请自备 MSDN,以便查阅 Windows GDI 函数。

对于 Windows GDI 中的绘图函数,操作目标通常是 DC(Device Context),因此需要传入一个 DC 的句柄,数据类型为 HDC(Handle of Device Context)。用 GetImageHDC() 函数可以获取 EasyX 的绘图窗口或 IMAGE 对象的句柄,然后就可以使用 Windows GDI 函数进行绘图操作。看以下示例:

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

int main()
{
	// 初始化绘图窗口,并获取 HDC 句柄
	initgraph(640, 480);
	HDC hdc = GetImageHDC();
...

VC绘图/游戏简易教程--15:窗体句柄(Windows 编程入门) 铜牌收录

教程总目录:https://codebus.cn/bestans/post/concise-lesson-contents(里面包括VC下的graphics.h的配置方法)

EasyX 库有一个获取窗口句柄的功能,很是强大,这里介绍一下。

【窗体句柄】

窗体句柄是 Windows 下窗口的标识,可以理解为窗口的 ID。Windows SDK 中的许多窗口操作函数都需要指明窗体句柄,也就是说,有了句柄,我们可以通过 Windows SDK 中的 API 实现许多高级的窗体控制。

【函数原型】

窗体句柄为 HWND 类型,通过 GetHWnd() 函数可以返回绘图窗体的句柄。其函数原型是:
HWND GetHWnd();

【使用句柄】

举个例子,设置窗体标题文字的 Windows API 为:
BOOL SetWindowText(HWND hWnd, LPCTSTR lpString);
参数:
   hWnd: 要设置标题文字的窗口句柄

...

VC绘图/游戏简易教程--14:通过位运算实现颜色的分离与处理 铜牌收录

教程总目录:https://codebus.cn/bestans/post/concise-lesson-contents(里面包括VC下的graphics.h的配置方法)

本节课要求熟练掌握位运算,详见:
http://hi.baidu.com/bestans/blog/item/fb75b439404876e614cecb9f.html (已失效)

[颜色基础]

在 EasyX 库中,颜色是一个 int 类型的数据,转换为 16 进制后的颜色格式是 0xbbggrr,其中,bb/gg/rr 分别表示两位十六进制的蓝/绿/红颜色值,每种颜色的范围是 0x0~0xff,转换为十进制就是 0~255。

举几个颜色标示的例子:

  • 颜色  直接表示  RGB 宏标示
  • 纯绿色 0x00ff00  RGB(0, 255, 0)
  • 青色  0xffff00  RGB(0, 255, 255)  注:青=蓝+绿
  • 中灰色 0x7f7f7f  RGB(12
...

VC绘图/游戏简易教程--13:getimage / putimage / loadimag / saveimage / IMAGE 的用法 铜牌收录

教程总目录:https://codebus.cn/bestans/post/concise-lesson-contents(里面包括VC下的graphics.h的配置方法)

 getimage / putimage / loadimage / saveimage 这一组命令和 IMAGE 对象可以实现图像处理的相关功能,下面逐个介绍。
(有点类似 tc 中的 imagesize)

[加载图片]

实现加载图片主要分三步:

  1. 定义 IMAGE 对象
  2. 读取图片至 IMAGE 对象
  3. 显示 IMAGE 对象到需要的位置

很简单,我们看一下完整的代码:

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

int main()
{
	initgraph(640, 480);

	IMAGE img;	// 定义 IMAGE 对象
...

VC绘图/游戏简易教程--12:数组 铜牌收录

教程总目录:https://codebus.cn/bestans/post/concise-lesson-contents(里面包括VC下的graphics.h的配置方法) 

课程要求:先复习下课本上对数组的讲解(随便一本教材都行)

一维数组

数组可以实现批量操作。比如,我们产生 10 个随机数,产生后先保存起来,然后输出最大的:

	int n[10];
	int i;
	for (i = 0; i < 10; i++)
		n[i] = rand() % 1000;

	// 按生成的顺序,逆序输出
	for (i = 9; i >= 0; i--)
		printf("%d\n", n[i]);

	// 找出最大的
	int max = -1;
	for (i = 0; i < 10; i++)
	{
		if (n[i] > max)
			max = n[i];
	}

	printf("最大的数字是
...