中易网

c++外部文件编译和PlaySound的问题

答案:2  悬赏:70  
解决时间 2021-01-14 09:14
  • 提问者网友:刺鸟
  • 2021-01-14 00:51
c++外部文件编译和PlaySound的问题
最佳答案
  • 二级知识专家网友:一秋
  • 2021-01-14 01:33
路劲要么固定,要么通过参数传进去!追问我的意思是只用一个EXE文件,把那个音频文件编进去追答你都意思,执行exe只播放这个文件,你又不想把这个视频文件放在exe目录下,你想链接进exe里面?追问是的追答这应该做不到,坐等高人回复。
全部回答
  • 1楼网友:白昼之月
  • 2021-01-14 03:04
一般的做法就是当作自定义资源加入到EXE中去,具体方法如下:
1. 在资源编辑器中,【Insert】-【Import】导入需要导入的文件,填写资源类型为WAV,导入的资源名称默认为IDR_WAV
2. 在需要使用时,通过FindReourse, LoadResource, LockResource加载资源。LockResource返回的资源在内存中的指针可以直接用于将资源数据(这里也就是您的数据文件数据)写入磁盘文件。
代码大致如下:
HRSRC hrc = FindResource(
NULL,
MAKEINTRESOURCE(IDR_WAV),
_T("WAV"));
if(hrc == NULL)
return FALSE;
HGLOBAL hGlobal = LoadResource(
NULL,
hrc);
if(hGlobal == NULL)
return FALSE;
//create temp file in system temp directory
_TCHAR pszTempPath[MAX_PATH] = {0};
if(0 >= GetTempPath(
MAX_PATH,
pszTempPath))
{
return FALSE;
}
CString strFilePath(pszTempPath);
DWORD dwSize = ::SizeofResource(
NULL,
hrc);
LPVOID pData = ::LockResource(hGlobal);
//write to file
strFilePath.TrimRight(_T("\\"));
CString strFileName;
strFileName.Format(_T(\\1.wav), strFilePath, GetTickCount());
strFilePath += strFileName;
CFile file;
if(!file.Open(strFilePath, CFile::modeCreate | CFile::modeWrite))
{
return FALSE;
}
file.WriteHuge(pData, dwSize);
file.Close();
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息