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

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

一:内容介绍

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

二:基础知识

windowsAPI 播放音乐:

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

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

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

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

使用方法:

cs 复制代码
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是窗口中显示的 "确定,取消",如果想换成其他的,可以右键转到定义

窗口句柄及标题:

模态对话框:

三:代码

cs 复制代码
#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行变换一下代码。

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

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

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

相关推荐
蜀黍@猿34 分钟前
【C++ 基础】从C到C++有哪些变化
c++
Am心若依旧40935 分钟前
[c++11(二)]Lambda表达式和Function包装器及bind函数
开发语言·c++
zh路西法1 小时前
【C++决策和状态管理】从状态模式,有限状态机,行为树到决策树(一):从电梯出发的状态模式State Pattern
c++·决策树·状态模式
stm 学习ing1 小时前
HDLBits训练5
c语言·fpga开发·fpga·eda·hdlbits·pld·hdl语言
轩辰~1 小时前
网络协议入门
linux·服务器·开发语言·网络·arm开发·c++·网络协议
lxyzcm1 小时前
C++23新特性解析:[[assume]]属性
java·c++·spring boot·c++23
蜀黍@猿2 小时前
C/C++基础错题归纳
c++
雨中rain2 小时前
Linux -- 从抢票逻辑理解线程互斥
linux·运维·c++
就爱学编程2 小时前
重生之我在异世界学编程之C语言小项目:通讯录
c语言·开发语言·数据结构·算法
北国无红豆3 小时前
【CAN总线】STM32的CAN外设
c语言·stm32·嵌入式硬件