首页 > 编程语言 >C/C++/EasyX——入门图形编程(6)

C/C++/EasyX——入门图形编程(6)

时间:2024-10-08 14:19:47浏览次数:3  
标签:EasyX 窗口 hnd OKCANCEL 编程 BGM C++ mciSendString 播放

【说明】hello,友友们,这一章是我写的入门图形编程的最后一章了,内容也不多,希望你们学的开心 (^~^)。顺便说一下,现在的我对一些基础操作的小游戏挺感兴趣的,之后也许会把代码教程写出来,动个小手点赞支持一下吧。敬请期待ヽ(*≧ω≦)ノ,

一:内容介绍

这一篇讲的是如何在黑窗口上播放音乐以及如何修改窗口标题、弹出对话框。

二:基础知识

windowsAPI 播放音乐:

为了实现C语言播放音乐,需要用到 windows 的一个API

1.需要包含头文件 windows.h和 mmsystem.h(如果已经包含了 graphics.h,则无需包含)

2.需要加载静态库 winmm.lib

3.最后用 mciSendString函数来播放音乐就可以了

使用方法:

mciSendString("open ./Dream_It_Possible alias BGM", 0, 0, 0);
mciSendString("play BGM repeat", 0, 0, 0);

窗口及对话框

HWND hnd =GetHWND();//获得窗口句柄

SetWindowText(hnd, "标题");//修改窗口标题

MessageBox(hnd/NULL, "恭喜你成功中奖500万", "提示", MB_OKCANCEL);//设置模态对话框,具体见下图。hnd/NULL的区别下面讲。

其中,MB_OKCANCEL是窗口中显示的 “确定,取消”,如果想换成其他的,可以右键转到定义

窗口句柄及标题:

模态对话框:

三:代码

#include <stdio.h>
#include <graphics.h>
#include <mmsystem.h>
#pragma comment(lib,"winmm.lib")//加载静态库
void BGM()
{
	//关于歌曲的文件同之前讲:在窗口上放映图片一样,要在同级文件下,后面的参数可以转到定义去看
	mciSendString("open ./Dream_It_Possible alias BGM", 0, 0, 0);
	//播放完歌曲后会自动暂停的,如果想要循环播放,可以加上repeat,注意while是不行的
	mciSendString("play BGM repeat", 0, 0, 0);
	if (0)
//如果想要停止播放,close 就行了,如下,这里的if(0)什么都不是,只是为了讲解,可以把0理解为你想要的停止播放条件
	{
		mciSendString("close BGM", 0, 0, 0);
	}
}
void change()
{
	//获取窗口句柄
	HWND hnd = GetHWnd();
	//设置窗口标题
	SetWindowText(hnd, "恭喜发财");
	//弹出窗口,提示用户操作
	MessageBox(NULL, "恭喜你成功中奖500万", "提示", MB_OKCANCEL);
	//MessageBox(hnd, "恭喜你成功中奖500万", "提示", MB_OKCANCEL);

}
int main()
{
	initgraph(640, 480);
	//BGM();
	change();
	getchar();
	closegraph();
	return 0;
}

第24,25行的区别在于,第24行上面的两个窗口是可以相互遮盖的,看下图

而第25行是不可以的,必须先解决你创建的窗口,选择“确定”或者“取消”,然后才能点“恭喜发财”的那个窗口。如果不点击,就无法拖动或者点击“恭喜发财”的那个窗口。

也可以在第24,25行变换一下代码。

//MessageBox()返回的值是int型整数,可以自行右键转到定义查看
int a=MessageBox(hnd, "恭喜你成功中奖500万", "提示", MB_OKCANCEL);
if (IDOK == a)
{
	//当然,这里也可以是一些操作,比如恶搞别人的,当别人选了什么操作,给他跳转到其他页面或者让他重新选择
	printf("你点击了OK\n");
}
if(IDCANCEL== a)
{
	printf("你点击了CANCEL\n");
}

 

四:入门图形编程内心总结

到这里就结束了,其实也挺感慨的,国庆的时候刷抖音看到别人用代码运行出国旗,虽然现在看来已经很简单了,但那时之前从来没接触过这方面,都是在黑窗口运行结果解决问题的,一直都很好奇这方面,所以那时心血来潮,开始搜索相关消息,从下载软件开始到搜索教程,再到整理知识写到这上面和大家分享,其中确实遇到了一些困难,比如软件的下载,折腾了我一下午,下错几次。我也有点感慨,我的三分钟热度竟还挺持久的 (。・ω・。),当看到也有人一起学习时,我是真的开心的,就说到这吧。关于图形编程的基础就讲到这里了,拜,回见 ( ˘ ³˘)❤~(^◇^)/ 。

标签:EasyX,窗口,hnd,OKCANCEL,编程,BGM,C++,mciSendString,播放
From: https://blog.csdn.net/wcj_______/article/details/142756918

相关文章

  • C++模板的特性
    #include<iostream>#include<cstdint>structCheckValue{CheckValue(inta,intb,intc){}voidfunctions(inta,intb,intc){std::cout<<a<<b<<c<<std::endl;}};classCheckValueV2{publ......
  • Chromium 中Window.localStorage对象c++实现分析
    一、前端定义Window.localStorage只读的localStorage 属性允许你访问一个Document 源(origin)的对象 Storage;存储的数据将保存在浏览器会话中。localStorage 类似 sessionStorage,但其区别在于:存储在 localStorage 的数据可以长期保留;而当页面会话结束——也就是说,当页面......
  • 深入挖掘C++中的特性之一 — 多态
    目录1.多态的概念2.多态的定义及其实现1.虚函数2.虚函数的重写/覆盖3.实现多态的必要条件4.多态的代码呈现5.来一道小题,深入理解一下多态3.虚函数重写的一些其他问题1.协变2.析构函数的重写4.override和final关键字5.重载/重写/隐藏的对比(相同函数名的函数间关系)......
  • 【算法】博弈论(C/C++)
    个人主页:摆烂小白敲代码创作领域:算法、C/C++持续更新算法领域的文章,让博主在您的算法之路上祝您一臂之力欢迎各位大佬莅临我的博客,您的关注、点赞、收藏、评论是我持续创作最大的动力目录博弈论:1.Grundy数与Nim博弈Nim博弈规则:Grundy数的计算:例题:2.极大极小算法......
  • 每天学点C++之多态
    一多态的语法多态的基本含义是,函数参数父为类型,传入该类不同的子类,所表现的行为会根据子类的具体情况而不同,大家请看代码:#include<iostream>usingnamespacestd;classAnimal{public:voideat(){cout<<"Animaleat"<<endl;}};classCat:publ......
  • Python 高级编程:深入解析 CSV 文件读取
    在Python中,读取CSV(逗号分隔值)文件是数据处理中的常见任务。以下将介绍一些高级的方法来读取CSV文件:使用pandas库读取CSV文件importpandasaspddf=pd.read_csv('file.csv')print(df)pandas是一个强大的数据处理库,read_csv函数可以方便地读取CSV文件并将其转换......
  • Python 高级编程:深入探索字符串切片
    在Python中,字符串切片是一种强大的操作,它允许我们从字符串中提取特定的部分。以下是关于Python字符串切片的高级教学: 基本的字符串切片string = "Hello, World!"# 提取从索引 7 到索引 11 的子串(不包括索引 11)substring = string[7:11]print(substring)......
  • labview和QT编程
    LabViewLabView所面向的并非传统意义上的程序员。他的所有功能都可以通过组合某些组件来完成。程序的流程控制,比如循环之类的也是通过画图一样的操作来做的。所有的程序功能几乎都可以通过鼠标来构造出来。优点是做一个能运行的程序非常简单。做一个虚拟的仪器很容易。也不需要......
  • 【C++】速通涉及 “vector” 的经典OJ编程题
    【C++】速通涉及“vector”的经典OJ编程题一.杨辉三角解题思路:代码实现:二.删除有序数组中的重复项解题思路:代码实现:【C/C++】按位运算符使用规制三.只出现一次的数字解题思路:代码实现:四.只出现一次的数字III解题思路:代码实现:一.杨辉三角本题LeetCode链......
  • c++条件变量
    条件变量是用于线程间同步的一种机制,它允许一个或多个线程在某个条件满足之前等待,并在条件满足时通知等待的线程继续执行。以下是条件变量的基本使用方法,包括notify_one和notify_all的作用。使用条件变量的基本步骤创建条件变量和互斥量:首先需要创建一个std::condition_v......