本文介紹如何在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 ); |
最後鎖定資源記憶體塊,並返回所標定記憶體塊的虛擬記憶體地址。如果該資源被成功鎖定的話,則傳回值指向該資源開始處的第一個位元組:
注意:若上述四步中的任何一步發生問題,則返回並釋放相應的記憶體。接下去要做的事情就是根據檔案資料類型進行資料載入。
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; } |