C++版挑战6秒

本文详细介绍了使用C++和EasyX库开发挑战6秒小游戏的过程,包括取消标题栏、拖动窗体、贴图实现关闭按钮、背景透明化、内嵌图片资源以及七段显示字符的方法。文章提供了相关代码实现和参考资料。
摘要由CSDN通过智能技术生成

项目说明

挑战6秒是精典的小游戏,通过控制按键来使时钟精准停在6秒整。
本程序仅仅为了学习的目的,还存在很多不完善甚至错误的地方,暂时不去修改了,请谨慎参考。
特别感谢@简单(2864292458@qq.com)同学,本程序即以他的“挑战六秒”程序为基础,添加了部分注释,进行了适当修改并添加了部分功能。

程序效果图

程序主界面

编译环境

  • VS2019
  • EasyX 2021

源码下载

挑战6秒-GitHub源码下载

程序功能

  • 基本游戏功能(保留了原程序的全部核心功能)
  • 取消标题栏(新)
  • 拖动没有标题栏的窗体(新)
  • 贴图实现关闭按钮(新)

以下对一些知识点做进一步说明;

1. 取消标题栏

即去掉程序的标题栏。initgraph()绘制总窗体(包括标题栏和主视图)时默认是有标题栏的,虽然可以设置取消“最小化”和“关闭”按钮,但标题栏依然存在。使用SetWindowLong()虽可以去掉标题栏,但主视图会往左上角移动,导致窗体的右边和下边出现黑边(见下图),因此还需要使用WinAPI相关函数(下面代码的最后一行)来消除黑边。
在这里插入图片描述
具体做法是:

  1. 利用GetSystemMetrics(SM_CYCAPTION)获取标题栏的高度;
  2. 使用CreateRectRgn() 创建一个矩形区域(即initgraph()中原来的长和宽,减去标题栏,剩下的矩形区域);
  3. 使用SetWindowRgn() 将新创建的矩形区域设置为显示区域;
// 初始化窗体,去掉最小化及关闭按钮
initgraph(800, 600, EW_NOCLOSE | EW_NOMINIMIZE);  
// 去掉标题栏
SetWindowLong(GetHWnd(), GWL_STYLE, GetWindowLong(GetHWnd(), GWL_STYLE) & ~WS_CAPTION);
// 获取标题栏的高度
int caption_height = GetSystemMetrics(SM_CYCAPTION);
// 去掉黑色边框
SetWindowRgn(GetHWnd(), Create;RectRgn(0, caption_height, 800, 600 - caption_height), true); 

参考资料:
CreateRectRgn function ;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值