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() 返回是否有按键发生。
...

实现桌面截图 铜牌收录

本文讲解怎样截取整个桌面的图像。对于控制台程序,执行后首先会创建一个黑色的控制台窗口,然后才会启动你的程序。因此这时候抓到的图,会包括一个黑色的控制台窗口,我想,这是大多数人不希望看到的。因此,实现抓图,要建立的项目需要是 Win32 Application,而不能是平时用的 Win32 Console Application。

保留透明(Alpha)信息地旋转图像 铜牌收录

EasyX 的旋转函数 rotateimage 不支持含有透明信息的图像的旋转,在设置了背景色的情况下会丢失透明信息,故特地编写了保留透明信息的旋转函数。 在此之前也有人写过此类旋转函数,旋转效果很好,也实现了目标效果,可惜存在一些致命 Bug,否则我也不会再造轮子。此旋转函数是原创的,取前人所长,去前人所短,绝对能满足您的旋转需求,让您也不必再造轮子。

使用程序代码输出常见的字体图标(标志图片) 铜牌收录

程序中经常会使用一些常规的标志(图标、Logo)图片,例如,音量开关、各种方向箭头、扑克牌花色、邮件、电话、磁盘、笑脸/哭脸、五星等等。通常做法是,制作好图片,然后在特定的位置将图片显示出来。本文讲述如何通过输出文字的形式将这些常规的标志图片进行输出。

创建一个不受系统缩放设置(DPI)影响的绘图窗口 铜牌收录

现在的屏幕分辨率都比较高,为了使屏幕字体不至于太小,通常在 Win10 的显示设置里面设为放大 125% 或 150% 或更大,这样就会导致像素实际上被放大了。

如果你的程序不希望受系统缩放设置影响,你需要使用一个新的 API 函数:SetProcessDpiAwareness

注意这个 API 函数的使用条件:

  • Win8.1 及以上版本
  • 头文件 ShellScalingApi.h
  • 库文件 Shcore.lib

以下是一个完整的范例程序,该范例创建一个不受系统缩放设置影响的绘图窗口,并画一个圆:

// 编译环境:Win10 + VS2019 + EasyX_20200727
//

// 设定操作系统版本为 Win10(需要放到 #include <graphics.h> 前面)
#define WINVER 0x0A00
#define _WIN32_WINNT 0x0A00

...

关于编程中“绝对路径”和“相对路径”的使用 铜牌收录

基本概念

加载图片、音乐等各种文件的时候,都要指定文件路径。通常,可以用绝对路径和相对路径两种方式来指定文件。

先解释一下概念:

  • 绝对路径,就是从盘符开始的路径,例如:“C:\Windows\system32\mfc42.dll”。
  • 相对路径,就是从当前路径开始的路径,例如,当前路径是“C:\Windows”,那么指定前面范例的文件,可以直接写“system32\mfc42.dll”。
    注意,路径分隔符“&rdquo;在 C 语言里面是转义字符,所以表达路径分隔符需要用“\”。

从功能上讲:

  • 访问每台电脑上路径都固定不变的文件,需要用绝对路径,例如访问 C:\Windows\system.ini。
  • 如果程序所在路径不固定,访问的文件和程序放在一起,就要用相对路径。例如和程序放在一起的图片文件。

项目范例

以下用 VC2010 的项目来说明绝对路径和相对路径如何使用。

...