如何在程序中显示资源中的位图及播放资源中的midi文件(50分)

  • 主题发起人 主题发起人 ricon2001
  • 开始时间 开始时间
R

ricon2001

Unregistered / Unconfirmed
GUEST, unregistred user!
如何建立位图及midi的资源文件,建立好后如何在程序中显示资源中的位图及播放资源中的
midi文件.
 
文件->资源
资源->Exe文件
取出资源后作为MIDI播放
//在菜单project->resources下建立new->user data,resource type='MID'
//并将lost.mid文件插入资源文件中(project1.res)
procedure TForm1.BitBtn1Click(Sender: TObject);
var
R: TResourceStream;
begin
r:=TResourceStream.Create(HInstance, 'lost', 'MID');
//其中lost为mid歌曲名称,MID为资源类型
r.SaveToFile('c:/temp.mid');
r.Free;
MediaPlayer1.FileName:='c:/temp.mid';
MediaPlayer1.open;
MediaPlayer1.Play;
end;
 
显示位图呢,能不能直接播放midi
 
bitmap.loadfromres

midi必须要先释放到临时文件!
 
能否具体一点!
 
//------------------------------------------------------------------------------
// 从资源文件放出文件
// 司马华鹏
function ExtractRes(resType, resName, resNewName : string):boolean;
var
res : TResourceStream;
begin
try
res := tresourcestream.create(hinstance, resname, pchar(restype));
try
res.savetofile(resnewname);
result:=true;
finally
res.free;
end;
except
result:=false;
end;
end;
 
如果不用MediaPlayer1,不释放资源,有其他方法播放吗.
 
strAudioFile:= ChangeFileExt(myGetTempFile,'.MP3');
ExtractRes('Love','Mp3',strAudioFile);

GetMem(ShortPathName,255);
GetShortPathName(pChar(strAudioFile), ShortPathName, 255);

mciSendString ('close myAudio', nil, 0, 0);
mciSendString (pChar('open ' + ShortPathName + ' alias myAudio'), nil, 0, 0);
mciSendString ('play myAudio', nil, 0, 0);
FreeMem(ShortPathName);
 
差不多了,谢谢!
 
多人接受答案了。
 
后退
顶部