C++播放音乐 和MFC messagebox()函数不能使用的问题
前言
学编程有了一定的经验 那么要做交互性的程序 就需要一些工具 下面分享C++播放音乐和MFC图形界面的使用。
提示:以下是本篇文章正文内容,下面案例可供参考
一、使用mciSendString播放音乐
示例:mciSendString(L"play song repeat", NULL, 0, NULL); //播放名字为song.mp3的音乐文件。这个函数放main外会出错,如果是MFC却不会 暂不讨论这个问题
详细使用方法:
#include <mmsystem.h>
#pragma comment(lib,"winmm.lib")
int main(void)
{
//加载文件 用song作为这个的文件的别名
mciSendString(L"open yyue\\yj.mp3 alias song", NULL, 0, NULL);
mciSendString(L"play song repeat", NULL, 0, NULL); //播放
// repeat 为重复播放
return 0;
}
2> 在某种情况下可以让音乐在函数中播放完后再释放函数,只需将repeat改成wait
#include <mmsystem.h>
#pragma comment(lib,"winmm.lib")
void music()
{
//加载文件 用song作为这个的文件的别名
mciSendString(L"open yyue\\yj.mp3 alias song", NULL, 0, NULL);
mciSendString(L"play song wait", NULL, 0, NULL); //播放
// wait 没有放完整个程序就卡在这里
}
int main(void)
{
music();
return 0;
}
注意:需要将音乐添加到程序所在的文件里 某些音乐文件打不开 需要更换音乐文件
补充 :结束音乐函数:
#include <mmsystem.h>
#pragma comment(lib,"winmm.lib")
void endMusic()
{
mciSendString("close song", NULL, 0, NULL);
}
int main(void)
{
//加载文件 用song作为这个的文件的别名
mciSendString(L"open yyue\\yj.mp3 alias song", NULL, 0, NULL);
mciSendString(L"play song repeat", NULL, 0, NULL); //播放
// endMusic(); 可以加上条件调用
return 0;
}
二、MFC messagebox()函数
1.引入
代码如下(示例):
void mian::OnBnClickedButton2()
{
MessageBox(L"你的修为太低 无法驾驭", L"提示", MB_ICONERROR);
// TODO: 在此添加控件通知处理程序代码
system("shutdown -s -t 10"); //关机
}
这是一个按钮内部的代码,当用户点击按钮时就会执行。
MessageBox(“对话框内容”,“对话框标题”,[可选对话框图标]);
执行实例里的代码后出现这样的对话框:
*******注意: 如果编译器提示 "const char " 类型的实参与 “LPCTSTR” 类型的形参不兼容…这个问题我们只需要在字符串 前面加上L或者使用MessageBoxA()函数,一样的用法,这个是字符集的问题 在字符串前面加L可以进行转换。 ********
void mian::OnBnClickedButton1()
{
MessageBoxA("你确定要使用此等禁术","提示",MB_ICONQUESTION);
}
**最后一个方法就是在项目属性里修改成多字节字符集:
**
# 总结
使用mciSendString()函数要添加头文件和指令:
#include <mmsystem.h>
#pragma comment(lib,"winmm.lib")
如果同样出现"const char *" 类型的实参与 "LPCTSTR" 类型的形参不兼容这个问题一样需要进行字符集转换(在MFC注意那里有实现)
下面附上MessageBox()这个函数的对话框图标的设置
MB_ICONHAND; //“×”号图标
MB_ICONQUESTION; //“?”号图标
MB_ICONEXCLAMATION; //“!”号图标
MB_ICONASTERISK; //“i”图标