VC++程序中加入自定义声音(PlaySound函数用法)

VC++编程中,我们可以为自己的程序加入音乐,比如当我们按下一个按钮时或者启动程序时,播放一小段音乐。

该功能用到函数:

BOOL PlaySound(LPCSTR pszSound, HMODULE hwnd,DWORD fdwSound);

参数定义:

参数pszSound是指定了要播放声音的字符串(一般是绝对路径,如果把声音文件拷到可执行文件所在路径就可以直接用声音文件名),该参数可以是WAVE文件的名字,或是WAV资源的名字,或是内存中声音数据的指针,或是在系统注册表WIN.INI中定义的系统事件声音。如果该参数为NULL则停止正在播放的声音。

参数hwnd是应用程序的实例句柄,除非pszSound的指向一个资源标识符(即fdwSound被定义为SND_RESOURCE),否则必须设置为NULL。

参数fdwSound是标志的组合,如下表所示。若成功则函数返回TRUE,否则返回FALSE。

标志:

SND_APPLICATION

用应用程序指定的关联来播放声音。

SND_ALIAS

pszSound参数指定了注册表或WIN.INI中的系统事件的别名。

SND_ALIAS_ID

pszSound参数指定了预定义的声音标识符。

SND_ASYNC

用异步方式播放声音,PlaySound函数在开始播放后立即返回。

SND_FILENAME

pszSound参数指定了WAVE文件名。

SND_LOOP

重复播放声音,必须与SND_ASYNC标志一块使用。

SND_MEMORY

播放载入到内存中的声音,此时pszSound是指向声音数据的指针。

SND_NODEFAULT

不播放缺省声音,若无此标志,则PlaySound在没找到声音时会播放缺省声音。

SND_NOSTOP

PlaySound不打断原来的声音播出并立即返回FALSE。

SND_NOWAIT

如果驱动程序正忙则函数就不播放声音并立即返回。

SND_PURGE

停止所有与调用任务有关的声音。若参数pszSound为NULL,就停止所有的声音,否则,停止pszSound指定的声音。

SND_RESOURCE

pszSound参数是WAVE资源的标识符,这时要用到hmod参数。

SND_SYNC

同步播放声音,在播放完后PlaySound函数才返回。

SND_SYSTEM

使用PlaySound函数时需要在#include<windows.h>后面加上(注意:不能加在前面):


1

2


#include <mmsystem.h>

#pragma comment(lib, "WINMM.LIB") //也可以在链接器里设置

我们此时就可以把此语句加入到我们想要的地方,例如:按钮的响应函数中,或者一个主框架程序的create

函数(或者initial函数中)中(在函数启动时,执行该函数)。

具体使用此函数时,我们希望函数返回了,但声音仍然在播放,此时第三个参数fdwSound要设置为异步,即:SND_ASYNC,同时由于我们第一个参数指出了wave文件的路径,所以同样需要加入标志:SND_FILENAME来制定文件路径。具体代码如下:

int CPassword::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CDialogEx::OnCreate(lpCreateStruct) == -1)
		return -1;

	// TODO:  在此添加您专用的创建代码
	if(sign==0)
	{
	CSplash wndSplash;                 //创建启动窗口类的实例
	wndSplash.Create(IDB_SCREEN_BITMAP);
	wndSplash.CenterWindow();
	wndSplash.UpdateWindow();          //send WM_PAINT
	Sleep(3000);

	wndSplash.DestroyWindow();//销毁初始画面窗口
	sign++;

	<span style="color:#ff0000;"><strong> PlaySound(L"C:\\Users\\zrl\\Desktop\\1.wav",NULL,SND_FILENAME|SND_ASYNC);</strong></span>

	}
	return 0;
}

运行程序就可以听见我们设定的声音了。

时间: 2024-11-08 17:57:19

VC++程序中加入自定义声音(PlaySound函数用法)的相关文章

C程序中引用自定义的C函数模块

我们知道,刚开始接触C语言编程,一般都是在一个.c或者.cpp(以下只说.c)的文件中编写代码,其中一定会有一个入口函数, 也就是main()函数,你可以将程序代码全部写在main函数里,当然如果你想要程序更加模块化,也可以将一些操作写在一个函数 里,这些函数的声明和定义也都是在main函数中. 想想,随着你的代码量越来越大,实现的功能越来越多,在一个.c文件中,你定义了许许多多的函数,这些函数实现着不同功能, 并且都是混杂在一起,你会不会感觉看着自己写的代码感觉自己的脑子也乱了?在这里我找到了

SUID或SGID程序中能不能用system函数

system()函数的声明和说明如下: 注意它的描述那里,system()执行一个由command参数定义的命令,通过调用/bin/sh -c命令来实现这个功能.也就是说它的逻辑是这样的! 进程调用system函数,system函数调用fork创建一个子进程,然后再调用exec函数来把这个子进程的正文段替换成/bin/sh命令的正文段.然后再由sh来执行exec将程序的正文段替换成command参数所代表的命令的正文段,例如,我的一个程序a.out来调用system函数来执行sleep 20命令

INNO SETUP卸载程序中加入自定义窗体

原文:INNO SETUP卸载程序中加入自定义窗体 [Setup] AppName=My Program AppVerName=My Program v.1.2 DefaultDirName={pf}/My Program [Files] Source: Files/*; DestDir: {app} [Code] const bidDelAll = 1; bidSkipAll = 2; var Form: TSetupForm; CheckListBox: TNewCheckListBox;

在VC项目中使用自定义资源

这是我看到的比较实用性的技巧,分享给大家 一.前言 在VC环境中除了我们所常用的Dialog.Menu和Bitmap等标准资源类型之外,它还支持自定义资源类型(Custom Resource),我们自定义的资源类型能做些什么呢?呵呵,用处多多. 1.默认的皮肤压缩包或语言包.一些支持换肤的软件特别是一些媒体播放器常常有自定义的皮肤文件(你可以尝试将Media Player或千千静听等软件的Skins目录下的文件的扩展名改为.zip,然后使用WinZip打开看一下),但为了防止Skin文件丢失导致

VC++编程中常用的字符串转换函数

VC++编程中经常遇到不同编码编码的字符串之间需要转换的情况,以下简单提供几个不同编码字符串之间的转换函数: ANSI 字符串和Unicode字符串之间的转换 //Convert wide char string to ANSI string BOOL WCharToMByte(LPCWSTR lpcwszStr,Std::string &str) { DWORD dwMinSize=0; LPSTR lpszStr=NULL; dwMinSize= WideCharToMultiByte(CP

Typecho博客程序中如何自定义Title部分

分享Typecho开源博客程序代码-如何自定义Title部分,代码如下:<?php if($this->_currentPage>1) echo '第 '.$this->_currentPage.' 页 - '; ?><?php $this->archiveTitle('', '', ' - '); ?><?php $this->options->title(); ?><?php if($this->is('index')

微信小程序中的自定义组件 以及 相关的坑

Step1 我们初始化一个小程序(本示例基础版本库为 1.7 ),删掉里面的示例代码,并新建一个 components 文件夹,用于存放我们以后开发中的所用组件,今天我们的目的是实现一个 首页 组件,因此,我们在 components 组件中新建一个 home 文件夹来存放我们的弹窗组件,在 home 下右击新建 Component 并命名为 home 后,会生成对应的 json wxml wxss js 4个文件,也就是一个自定义组件的组成部分,此时你的项目结构应该如下图所示: Step2 组

在VC程序中获得资源文件中定义的公司名称

今天想从自己定义的资源文件中取出公司名称, 百度了下发现全是关于从资源文件中取得版本号的办法, 还好微软的MSDN给了我答案, 为了以后方便自己和别人, 就把这个函数贴出来. 希望百度能优化一下自己的搜索算法, 搜出来的结果几乎都是重复的, 想用能搜出来的结果用不了.百度的这一毛病也映射出了中国网民的复制粘贴的"情结"特别严重, 都是原样复制, 其中的错误都不改一下. ///////////////////////////////////////////////////////////

在自己的iOS程序中引入自定义字体

在网上找了下教程, 大多数都要获取字体文件的真实字体名,用起来比较麻烦. 在iOS7中,引入了UIFontDescriptor,so...可以这么写. UIFontDescriptor *fontdesc = [UIFontDescriptor fontDescriptorWithFontAttributes:@{UIFontDescriptorVisibleNameAttribute : fontName}]; [_richTextView.textStorage addAttributes: