本文介紹如何在VC資源文件中加入自己的聲音資源,使自己的應用程序可以播放聲音。
1、首先用文本編輯器(如記事本)打開資源文件(.rc文件)
在最後加入自己的聲音資源,如下IDW WAVE "c:\kav\sound\virus.wav"
保存資源文件。
2、在應用程序中要播放聲音的地方啟動另一線程,用來播放聲音:
AfxBeginThread((AFX_THREADPROC)sound,NULL,THREAD_PRIORITY_NORMAL);
3、添加線程回調函數
這裡介紹加載資源的方法。首先用函數AfxGetInstanceHandle()獲得實例的句柄,其次用函數FindResource找到自己的聲音資源。
HRSRC FindResource(
HMODULE hModule, // module handle
LPCTSTR lpName, // resource name
LPCTSTR lpType // resource type
)
找到聲音資源後,要用LoadResource加入該資源
HGLOBAL LoadResource(
HMODULE hModule, // module handle
HRSRC hResInfo // resource handle
);
最後鎖定資源內存塊,並返回所標定內存塊的虛擬內存地址。如果該資源被成功鎖定的話,則返回值指向該資源開始處的第一個字節:
LPVOID pv=LockResource()
注意:若上述四步中的任何一步發生問題,則返回並釋放相應的內存。接下去要做的事情就是根據文件數據類型進行數據加載。
UINT CPlaySoundVIEw::sound(LPVOID pParam)
{
HINSTANCE h=AfxGetInstanceHandle();
HRSRC hr=FindResource(h,"IDW","WAVE");
HGLOBAL hg=LoadResource(h,hr);
LPSTR lp=(LPSTR)LockResource(hg);
sndPlaySound(lp,SND_MEMORY|SND_SYNC);
FreeResource(hg);
return 0;
}