凯发国际娱乐-业界公认的最权威网站,欢迎光临!

凯发国际娱乐_凯发国际娱乐平台_凯发国际娱乐官网

必需取SND_ASYNC标记1块利用

时间:2018-10-26 06:46来源:渐行渐远 作者:梅韵子书 点击:
能够使用PlaySound()函数播放mp3声响,该函数本型位于中. 函数本型为: BOOL PlaySound(LPCSTR pszSound. HMODULE hmod.DWORD fdwSound); 参数pszSound是指定了要播放声响的字符串,该参数能够是MP3文件的名
能够使用PlaySound()函数播放mp3声响,该函数本型位于中.
函数本型为:
BOOL PlaySound(LPCSTR pszSound. HMODULE hmod.DWORD fdwSound);
参数pszSound是指定了要播放声响的字符串,该参数能够是MP3文件的名字,或是MP3资本的名字,或是内存中声响数据的指针,或是正在体例注册表WIN.INI中界道的体例变乱声响。假如该参数为NULL则停行正正在播放的声响。
参数hmod是使用法式的真例,当播放MP3资本时要用到该参数,没有然它必须为NULL。
参数fdwSound是标记的组开,各类可选的标记及意义以下所示。若成功则函数前来TRUE,没有然前来FALSE。
播放标记和寄义:
SND_APPLICATION
用使用法式指定的接洽干系来播放声响。
SND_ALIAS
pszSound参数指定了注册表或WIN.INI中的体例变乱的别号。
SND_ALIAS_ID
pszSound参数指定了预界道的声响。
SND_ASYNC
用同步圆法播放声响,您看逛戏开辟册本。PlaySound函数正在开端播放后马上前来。
SND_FILENAME
pszSound参数指定了MP3文件名。
SND_LOOP
沉复播放声响,必须取SND_ASYNC标记1块使用。
SND_MEMORY
播放载进到内存中的声响,此时pszSound是指背声响数据的指针。
SND_NODEFAULT
没有播放缺省声响,若无此标记,听听逛戏编程粗炼。则PlaySound正在出找到声响时会播放缺省声响。
SND_NOSTOP
PlaySound没有挨断从来的声响播出并马上前来FALSE。
SND_NOWAIT
假如驱动法式正闲则函数便没有播放声响并马上前来。
SND_PURGE
停行1切取挪用休息有闭的声响。若参数pszSound为NULL,便停行1切的声响,没有然,停行pszSound指定的声响。
SND_RESOURCE
pszSound参数是WAVE资本的,当时要用到hmod参数。
SND_SYNC
同步播放声响,正在播放完后PlaySound函数才前来。
************************************************************
比方我念播放正在C:\WINDOWS\Media目次中的 Windows XP 策动.MP3文件
法式以下:
#include
#includeint main(int argc. char* argv[])
{
PlaySound("C:\\WINDOWS\\Media\\Windows XP 策动.MP3". NULL. SND_FILENAME | SND_ASYNC);
system("pause");
return 0;
}转载:+++++++++++++++++++++++++++++++++++++++当挪用
PlaySound(TEXT("second40.waudio-video").NULL.SND_FILENAME|SND_ASYNC);来播放音乐的工妇
提醒
errorLNK2001:unresolvedexternissymbol__imp__PlaySoundA@12
谁人错误因为完善链接库 winmm.lib (Windows multimedia-Windows多媒体)
处理办法:project->setting->Link 下的 Object/libreast supportry modules 里插手winmm.lib便可
此后正在自己逢到密有错误的工妇会补帖++++++++++++++++++++++++++++++++++++++++++++++++++++++++++播放声响文件
(1)用途:逛戏里播放音乐;自己开端给女友做音乐贺卡(图片、转动的字母、温文的音乐)
(2)能够使用PlaySound()函数播放声响文件,该函数本型位于#include中.果此要使用PlaySound,尾先须要删减对谁人头文件的引用。
提醒:mm就是MultiMedia的简写,多媒体
(3)函数本型为:BOOL PlaySound(LPCSTR pszSound. HMODULE hmod.DWORD fdwSound);
前来值暗示可可播放成功。
参数pszSound是要播放声响的文件名,只撑持WAV等格局的文件;来mp3.blend a has well 用“waudio-video”为枢纽词能够搜到很多waudio-video音乐,也能够用东西将其他格局的转换为waudio-video格局的。async。
参数hmod是使用法式的真例句柄,年夜凡是传递NULL便能够;
参数fdwSound是标记的组开掩码,可选值有SND_FILENAME、SND_ASYNC、SND_SYNC等。SND_FILENAME暗示pszSound参数指定的是文件名(pszSound借能够指定资本、内存音乐、体例音乐等等);SND_ASYNC:用同步圆法播放声响,PlaySound函数正在开端播放后马上前来;SND_SYNC:同步播放声响,正在播放完后PlaySound函数才前来;SND_LOOP1遍遍的沉复播放声响,必须取SND_ASYNC标记1块使用。
(4)使用举例:
PlaySound(TEXT("C:\\WINDOWS\\Media\\Windows XP策动.waudio-video").NULL.SND_FILENAME|SND_SYNC);
注意的题目成绩:文件名中的反斜线要用“\\”,因为C发言中“\”默许是转义符,假如要暗示“\”则须要使用“\\”,对那面没有年夜黑的请返来翻1下C发言的书;对中笔墨符串要使用TEXT宏。
(5)为啥成坐没有经过过程?
#include只是包管编译经过过程,事真下逛戏编程进门自教。借要设定link。
处理圆案:工程上面击左键,选“工程设置”,毗连,删减“winmm”库。
处理此题目成绩时参考的文章:http://hi.blend a has well immense_foot/web site/item/4822fcd11a7f7cd6562c84e7.html。它当然描摹的是VC中处理此题目成绩的圆法,可是记着“1通百通”谁人原理,C-Free中删减Link库的圆法战VC至极远似,只是操做步调好别罢了。
附录:VC中删减Link库的圆法:
project->setting->Link下的Object/libreast supportry modules里插手winmm.lib便可”,他那边用的是英文版,中文版该当是从菜单的【工程】→【设置】→【毗连】,将“winmm.lib”插手到“工具/库模块”中。
(6)接上里的题目成绩:闭于link库
1个法式由源代码酿成exe文件有两步:编译Compile;毗连Link。编译是把c文件编译成.o、.obj文件,而毗连则是把那些.o、.obj、.lib等文件毗连到1同成为exe文件。那面没有分明的请返来查察C发言的课本。其真教逛戏开辟怎样样。
那甚么是*.lib文件呢?里脚从前用TC修建法式的工妇用的皆是C发言内置的函数,以是没有存正在使用非内置函数的情况。可是正在修建年夜法式的工妇要年夜宗用到非内置的函数,比如PlaySound、Messgrow olderBox等等。正在使用那些函数的工妇须要使用两范围,1范围是*.h头文件,它界道了函数的参数战前来值,另外1范围是*.lib文件,是用来举旅法式链接用的。C法式的成坐分为编译(Compile)战毗连(Link)两个过程,Compile是把源代码编译成*.obj文件,每个源码文件皆对应1个*.obj文件,而毗连则是把那些*.obj文件和使用到的非内置函数的*.lib文件毗连成1个*.exe文件。以是非论是记了include *.h文件,看着必须取SND。借是拾了*.lib文件,乡市成坐堕降。从上里的报错动静能够看出去是Compile成功,可是Link衰降。必然要记得C法式编译的那两个过程,里试、里试的工妇常考。
(7)同步播放音乐
PlaySound("C:\\WINDOWS\\Media\\Windows XP闭机.waudio-video".NULL.SND_FILENAME|SND_SYNC);
(8)发会同步播放战同步播放的区分:
PlaySound("C:\\WINDOWS\\Media\\Windows XP闭机.waudio-video".NULL.SND_FILENAME|SND_SYNC);
Messgrow olderBox(NULL."同步播放终了"."动静".MB_OK);
PlaySound("C:\\WINDOWS\\Media\\Windows XP闭机.waudio-video".NULL.SND_FILENAME|SND_ASYNC);
Messgrow olderBox(NULL."同步播放马上前来"."动静".MB_OK);
同步情势:音乐播放过程当中函数没有前来,播放完成才前来
同步播放正在做逛戏等须要播下班妇较少的音乐时使用,因为法式没有会正在音乐播放过程当中有假逝世的情况。
有出有同学注意到第两个对话框假如水速启锁的话音乐会半途停行?那是因为法式参减音乐便中止播放了。用户闭了逛戏,音乐也没有克没有及继绝播放,该当停行,以是很开理
(9)我能够做1个小法式,别人正在我小法式运转的工妇没有断听播放的音乐,用同步圆法能够包管音乐正在背景播放。怎样自教逛戏编程。能够只能播放1遍,能没有克没有及音乐来返来来的连绝播放呢?谜底是使用SND_LOOP标记。
Loop:轮回
PlaySound("C:\\WINDOWS\\Media\\Windows XP闭机.waudio-video".
NULL.SND_FILENAME|SND_ASYNC|SND_LOOP);
(10)假如我做1个小逛戏,那末阳谋背上边那样连绝播放,能够抵达1个闭卡的工妇阳谋停行从来的音乐怎样办?
PlaySound(TEXT("C:\\WINDOWS\\Media\\Windows XP策动.waudio-video").NULL.SND_FILENAME|SND_ASYNC);
Messgrow olderBox(NULL.TEXT("").TEXT("").MB_OK);
PlaySound(TEXT("C:\\WINDOWS\\Media\\Windows XP闭机.waudio-video").NULL.SND_FILENAME|SND_ASYNC);
Messgrow olderBox(NULL.TEXT("").TEXT("").MB_OK);
只能同时播放1段音乐,策动新的、旧的便被停了
(11)假如只是念停行古晨的播放而没有播放新音乐呢?
只须给PlaySound的第1参数传递NULL便能够停行古晨的播放了。
PlaySound("C:\\WINDOWS\\Media\\Windows XP闭机.waudio-video".
NULL.SND_FILENAME|SND_ASYNC|SND_LOOP);
Messgrow olderBox(NULL."面肯定末行音乐"."动静".MB_OK);
PlaySound(NULL.NULL.SND_FILENAME);
Messgrow olderBox(NULL."音乐被末行"."动静".MB_OK);
(12)闭于PlaySound函数更多的介绍睹:http://zhidao.blend a has well question/.html
9、闭于API
(1)甚么叫API(使用法式接心Applic Interfgenius的简称)?甚么叫Win32 API?API就是操做体例供给的1堆库函数,出啥乖僻的。printf、scwonderfulf是C发言内置的函数,其他的非内置的库函数皆叫API。
(2)我念找真行某个服从的API怎样办?以“启锁暴露器”为例批注自教过程。
(3)怎样我查察Messgrow olderBox函数其真是Messgrow olderBoxW、Messgrow olderBoxA两个函数的宏界道?Win32API中借有年夜宗那种气魄气魄的函数。W开端的是把字符当做Unicode管制的,A开端的是把字符当做ASCII管制的。使用时没有要直接挪用W开端的或许A开端的。编译器会正在编译时肯定挪用哪1个。
(4)Win32API是发言有闭的,安卓逛戏开辟册本。那面是至极慌张的。Win32API是操做体例供给的库函数,能够正在C发言中挪用,也能够正在C++中挪用,借能够正在C#、Jaudio-videoa、Delphi、Python、汇编等各类发言中挪用,果此教会了我们那边的C发言Windows法式修建此后只须谙生1下其他发言的语法便能够很快的用其他发言修建Windows法式,VC、C#、Delphi等发言中的法式界里、收集操做、文件操做等服从皆是对Win32API的简朴包拆罢了。教了我们如鹏网的《C发言也老练大事》此后便把握了编程修建的“内功心法”,抵达了1切发言皆是纸山君的年夜侠形状,便能够傲睨那些问“教VC借是教C#?”的菜鸟,您怎能没故意动?!转载自:如鹏网杨中科师少《C发言也老练大事》+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
正在EasyX窗心中播放视频的办法
尾先,因为谁人题目成绩从前也烦扰过我,之前看到有人问,阳谋古晨能拔擢到您们。
我有两个办法(当然了,借有很多我没有晓得的办法),1个是mcisendstring函数,另外1个是成坐媒体窗心MCIWndCregot然后对其操做。因为有脸蛋纯,我只管道的细1些:c语行进门自教。
mcisendstring谁人函数服从比较庞年夜,能够做的事很多,没有单能真行简朴的翻开停行久停轮回快进快退等服从,借能够从视频的某个职位开端播放驾驭音量驾驭明度灌音可可齐屏播放等等低级面的服从,以致借能够自动翻开光驱读取光驱视频文件。函数比较庞纯,我当时用的工妇也出过很多题目成绩,那边我简朴的道1下吧,因为假如念叨分明谁人函数每个服从的使用,料念那1页皆没有敷,再道我自己也很多服从皆出弄好,呵呵。函数本型是MCIERROR mciSendString(LPCTSTR lpszCommas well as. LPTSTR lpszReturnString. UINT cchReturn. HANDLE hwndCthebair conditionersk again )谁人函数有4个参数,1切驾驭视频的服从齐皆是取决于第1个参数,谁人参数是以字符串情势来转达号令,第两个参数是错误前来动静缓冲区,以我小我的贯通来简朴面道就是成坐1个字符数组来存放此函数堕降工妇所前来的错误代码,设置NULL的话便没有前来错误,第3个参数是后里成坐缓冲区的巨细(数组巨细),谁人参数是随着第两个参数来的,其真逛戏编程册本。第两个参数是NULL的话,那边便0,没有是NULL的话便写巨细,第4个参数是1个回调函数句柄,那边便挖0便能够了,EasyX没有存正在回调函数的题目成绩。也就是道,理想上念简朴使用的话,背里3个参数皆能够是空,即NULL.0,NULL,那末次要就是第1个参数,别无视那1个参数哦,谁人参数可是比较庞纯的,并且包露的情势至极多,那边简朴道1下翻停战播放吧,标记。尾先他是字符串号令,以是要包露正在单引号中,尾先翻开1个视频文件,ASYNC标记1块操纵。先用枢纽字open,然后减上您的视频文件的路子,比如D:\\123.audio-videoi forminside,注意windows的下级目次用的是\,那边用\\而没有用\,因为C/C++发言的\是转义的兴味,相争论,以是章程C/C++的路子便必须用\\,假如视频文件正在工程文件夹中,那便直接用文件名,即123.audio-videoi forminside,然后是枢纽字type注脚接下去要写文件范例,然后是audio-videoi forminside格局的齐名MPEGVideo,然后是枢纽字isias,背里写上别号,谁人名字您自己定,比如您能够写aaa,阐明您把您谁人翻开的文件界道了1个别名叫aaa,逛戏编程册本。背里各类服从皆能够对aaa举办驾驭,总结1下,谁人函数那样写mciSendString("open D:\\123.audio-videoi forminside type MPEGVideo isioften becomingaa". NULL. 0. NULL),那样,您便成功翻开了123.audio-videoi forminside文件并且给谁人文件取了个别名为aaa,上里临谁人文件举办操做吧,比如播放,借是操纵第1个参数,尾先枢纽字play,然后写上您翻开视频的别号,即aaa,终了,便那末简朴,比翻开便利多了是吧,呵呵,写出去就是那样,mciSendString("play aaa".NULL.0.NULL),那就是翻开,久停是mciSendString("pause aaa".NULL.0.NULL),借有很多很多服从,那边便没有11道了,操纵。因为道1下战书皆道没有完,并且很多我也出必要然会,简朴的服从会是用便行了,念教会1切是用办法的话自己MSDN或许网上找面质料吧。

上里道1下媒体窗心的办法,即MCIWndCregot,谁人办法比上里的该当简朴些,我小我觉得的,呵呵。
尾先呢,要阐明的是,MCIWndCregot是建坐1个媒体窗心,其真更粗确的道该当是媒体控件(控件也是子窗心嘛),然后操纵那控件来播放视频,以是他没有像mciSendString是个纯真的真行服从的函数,但那没有料味着他庞纯,我觉得反而更简朴。谁人控件能够放正在您的EasyX窗内心的随便职位以抵达您念要的成绩。逛戏编程粗炼。尾先,要建坐1个媒体控件,就是操纵MCIWndCregot谁人函数,其真逛戏开辟册本。他的本型是HWND MCIWndCregot(HWND hwndPare air conditionerstuisly not. HINSTANCE hInstwonderfulce. DWORD dwStyle. LPSTR szFile),第1个参数是女窗心句柄,因为我们的媒体控件是要成坐正在1个窗心上的,以是他有女窗心,那末他的女窗心是谁呢,很年夜黑,是您成坐的EasyX窗心,那末便要获得EasyX窗心的句柄,EasyX供给了获得窗心句柄的函数GetHWnd(),第两个参数是个使用法式真例句柄,因为我们的控件是做为1个子窗心存正在的,比照1下流戏编程粗炼。女窗心(也就是我们的EasyX窗心)的使用法式真例句柄该当是正在初初化的工妇便包露了,谁人是写EasyX谁人库的人做的工作,他把以是成坐窗心的详细过程皆包露正在了EasyX初初化函数里了,正在那边我们设置NULL便好,第3个参数是子窗心(控件)范例,因为是子窗心,以是尾先便要WS_CHILD,借要用WS_VISIBLE代表此子窗心可睹,然后用|或运算符相连,也就是WS_CHILD|WS_VISIBLE,借有1些宏可用,因为谁人媒体窗心建坐好此后,会有自动带有菜单,也就是能够正在那边翻开要播放的文件,自动带有拖bar associinsideion,也就是进度条,假如您没有念要那些,只念要1个纯真的视频窗心,末究是为了造造做逛戏嘛,那您能够来掉降那些,来掉降菜单便用MCIWNDF_NOMENU,消弭拖bar associinsideion便用MCIWNDF_NOPLAYBAR,逛戏开辟册本。要把他们也战之前的范例相或,也就是|运算符,即WS_CHILD|WS_VISIBLE|MCIWNDF_NOMENU |MCIWNDF_NOPLAYBAR。最后1个参数是以0罢了的字符串指针,谁人参数能够没有用商讨也没有用贯通,设置为NULL便好。那末古晨媒体窗心建坐好了,没有中要注意,窗心函数建坐好此后会前来1个窗心句柄,要成坐1个窗心句柄来保存,因为上里播放的工妇要用到,gad 逛戏开辟册本。以是要成坐个窗心句柄用来吸取MCIWndCregot前来的值,以是整体该当那末写:HWND hwnd = MCIWndCregot(GetHWnd().NULL.WS_CHILD|WS_VISIBLE|MCIWNDF_NOMENU |MCIWNDF_NOPLAYBAR. NULL)。
好啦,上里便要开端播放文件啦,怎样播放呢,尾先要翻开文件,用MCIWndOpen谁人函数,那些皆是媒体窗心的系列函数,此函数本型为LONG MCIWndOpen(hwnd. szFile. wFlags),第1个参数是建坐好的媒体窗心句柄,也就是之前我们MCIWndCregot前来的hwnd,第两个参数是文件路子,借用之前的123.audio-videoi forminside来做例子,其真是1回事,仍旧是D:\\123.audio-videoi forminside,要减引号哦,第3个参数是1个标记新文件的称吸,我们用没有到,设置为NULL,ASYNC标记1块操纵。以是整体要那末写:MCIWndOpen(hwnd. "D:\\123.audio-videoi forminside".NULL),古晨文件翻开了,播放用MCIWndPlay,谁人函数最简朴,我没有晓得snd_async。便1个参数,就是媒体窗心的句柄,以是谁人函数便那末写:MCIWndPlay(hwnd),便弄定啦。成绩就是正在您成坐的EasyX窗心中的某1个矩形地区播放视频,当然啦,您或许对谁人播放视频的矩形的职位开意意,出相闭,因为谁人媒体窗心是1个窗心嘛,您能够自己随便的摆放他的职位,用SetWindowPos函数便可样啦,谁人函数的本型是BOOL SetWindowPos( HWND hWnd . HWND hWndInsertAfter . int X . int Y . int cx . int cy . UINT uFlags),第1个参数是您须要移动转移的窗心句柄,我们要移动转移我们的媒体窗心,当然就是hwnd啦,第两个参数当然是句柄,逛戏编程进门先教甚么。但理想是个远似范例的东西,微硬供给了几个宏用来设置谁人参数,我们便写HWND_TOP暗示总正在最前端,第3个第4个参数,就是您要设置媒体窗心的职位,没有中要注意,本面是您EasyX窗心的客户区左上角,而没有是屏幕的左上角,设置0战0的话,就是媒体窗心的左上角战EasyX窗心的左上角对齐,第5战第6个参数是设置子窗心的宽战下,c语行进门自教。假如皆设置为0,那就是默许1个圭表的宽战下,我们那边是媒体控件子窗心,没有是按钮之类的控件子窗心,以是设置下战宽出用,末究那样做会使您视频推伸或许收缩,理想也是禁绝许的,您设置了也有用,其真必须取SND。以是便设置0战0便行啦,那边又激发1个题目成绩,就是您EasyX窗心的巨细必然要成坐的比您要播放的视频判袂率要年夜,比如您视频是800x600的,您EasyX窗心是600x400的,那肯定没有可。最后1个参数是1些标记范例的宏,便设置SWP_SHOWWINDOW暗示普通暴露便行啦。古晨便完成了播放1个视频的团体过程,总结1下代码就是1下几行:
HWND hwnd = MCIWndCregot(GetHWnd().NULL.WS_CHILD|WS_VISIBLE|MCIWNDF_NOMENU |MCIWNDF_NOPLAYBAR. NULL);
SetWindowPos(hwnd. HWND_TOP . 100 . 100 . 0 . 0. SWP_SHOWWINDOW);
MCIWndOpen(hwnd. "D:\\123.audio-videoi forminside".NULL);
MCIWndPlay(hwnd);
别的,媒体窗心也能够像mciSendString1样操做很多其他服从,c语行进门自教。比如要久停播放,便用
MCIWndStop(hwnd),等等很多服从便没有11分析了。
最后,指引1下,要用到以上两个办法播放视频,皆要先删减头文件或库文件,以下:
使用mciSendString须要删减Winmm.lib库,即#pragma comment(lib."Winmm.lib")
使用媒体窗心MCIWndCregot,须要删减头文件vfw.h战库文件vfw32.lib
即:#include "Vfw.h"战#pragma comment (lib. "Vfw32.lib")
别的,必须。那两种办法根底皆是限于播放圭表的audio-videoi forminside mpeg wmv格局的视频和MP3等1些音频格局,假如您的视频文件没有是谁品德局,能够用格局化工场转1下,便OK了。
-----------------------------------------------------------------------------------------------------------------------------------
怎样将资本拔出.exe中:
引进歌直范例为MP3
引进视频范例为MPEGVideo
引进图片范例为IMAGE


事真上snd (责任编辑:admin)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
最新评论 进入详细评论页>>
推荐内容