程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> 關於VC++ >> 在資源文件中加入聲音資源

在資源文件中加入聲音資源

編輯:關於VC++

本文介紹如何在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;
}
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved