C++播放音乐和MFC的messagebox用法

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”图标


  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MFC中的MessageBox(消息框)函数用于在应用程序中显示一些消息或者询问用户是否执行某个操作。MessageBox函数的原型如下: ```c++ int MessageBox( LPCTSTR lpText, LPCTSTR lpCaption = NULL, UINT uType = MB_OK ); ``` 其中,参数lpText表示要显示的消息内容,参数lpCaption表示消息框的标题,参数uType表示消息框的类型,可以使用以下常量: - MB_OK:显示一个OK按钮。 - MB_OKCANCEL:显示OK和Cancel按钮。 - MB_YESNO:显示Yes和No按钮。 - MB_YESNOCANCEL:显示Yes、No和Cancel按钮。 - MB_ICONSTOP:显示一个停止图标。 - MB_ICONERROR:显示一个错误图标。 - MB_ICONQUESTION:显示一个问号图标。 - MB_ICONINFORMATION:显示一个信息图标。 - MB_ICONWARNING:显示一个警告图标。 MessageBox函数返回值为用户点击的按钮,可以是以下常量之一: - IDOK:用户点击了OK按钮。 - IDCANCEL:用户点击了Cancel按钮。 - IDYES:用户点击了Yes按钮。 - IDNO:用户点击了No按钮。 下面是一个简单的使用MessageBox函数的例子: ```c++ void CMyDlg::OnButton1() { int ret = MessageBox(_T("确定要删除文件吗?"), _T("警告"), MB_YESNO | MB_ICONWARNING); if (ret == IDYES) { //执行删除操作 } else if (ret == IDNO) { //取消删除操作 } } ``` 在这个例子中,当用户点击“删除”按钮时,会弹出一个带有警告图标和Yes/No按钮的消息框,询问用户是否真的要删除文件。如果用户点击了Yes按钮,则执行删除操作;如果用户点击了No按钮,则取消删除操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值