HMODULE bassmidi=GetModuleHandle("bassmidi.dll");
if (bassmidi) { // BASSMIDI loaded
HSOUNDFONT (WINAPI *BASS_MIDI_FontInit)(const void *file, DWORD flags)
=GetProcAddress(bassmidi, "BASS_MIDI_FontInit");
BOOL (WINAPI *BASS_MIDI_StreamSetFonts)(HSTREAM handle, const BASS_MIDI_FONT *fonts, DWORD count)
=GetProcAddress(bassmidi, "BASS_MIDI_StreamSetFonts");
BASS_MIDI_FONT sf;
sf.font=BASS_MIDI_FontInit("chorium.sf2", 0);
if (sf.font) { // soundfont opened
sf.preset=-1; // use all presets
sf.bank=0; // use default bank(s)
BASS_MIDI_StreamSetFonts(0, &sf, 1); // set default soundfont
}
}//=========我是這樣學著轉的,但是轉不過來
var
bassmidi: HMODULE;
sf: BASS_MIDI_FONT;
sfont: HSOUNDFONT;
...???
begin
bassmidi := GetModuleHandle('bassmidi.dll');//bassmidi.dll 是一個庫文件
if ... then
begin
sf.font :=BASS_MIDI_FontInit("chorium.sf2", 0);//chorium.sf2是一個音色文件
...????
if ... then // soundfont opened
begin
sf.preset :=-1; // use all presets
sf.bank :=0; // use default bank(s)
end;
BASS_MIDI_StreamSetFonts(0, sf, 1); // set default soundfont
end;//不知道上面可不可以提示大家轉換?我沒用過C...
//謝謝你的幫忙!
if (bassmidi) { // BASSMIDI loaded
HSOUNDFONT (WINAPI *BASS_MIDI_FontInit)(const void *file, DWORD flags)
=GetProcAddress(bassmidi, "BASS_MIDI_FontInit");
BOOL (WINAPI *BASS_MIDI_StreamSetFonts)(HSTREAM handle, const BASS_MIDI_FONT *fonts, DWORD count)
=GetProcAddress(bassmidi, "BASS_MIDI_StreamSetFonts");
BASS_MIDI_FONT sf;
sf.font=BASS_MIDI_FontInit("chorium.sf2", 0);
if (sf.font) { // soundfont opened
sf.preset=-1; // use all presets
sf.bank=0; // use default bank(s)
BASS_MIDI_StreamSetFonts(0, &sf, 1); // set default soundfont
}
}//=========我是這樣學著轉的,但是轉不過來
var
bassmidi: HMODULE;
sf: BASS_MIDI_FONT;
sfont: HSOUNDFONT;
...???
begin
bassmidi := GetModuleHandle('bassmidi.dll');//bassmidi.dll 是一個庫文件
if ... then
begin
sf.font :=BASS_MIDI_FontInit("chorium.sf2", 0);//chorium.sf2是一個音色文件
...????
if ... then // soundfont opened
begin
sf.preset :=-1; // use all presets
sf.bank :=0; // use default bank(s)
end;
BASS_MIDI_StreamSetFonts(0, sf, 1); // set default soundfont
end;//不知道上面可不可以提示大家轉換?我沒用過C...
//謝謝你的幫忙!
解决方案 »
- 请不要发表可能给我们带来伤害的言论,谢谢配合????????????????????????????????
- 请教如何取消TMaskEdit的对输入格式判断警告?
- 用rave5做的宽表,为什麽在Win2000运行正常,在Win98只能打印约五分之四?
- delphi中有目录选择对话框吗?
- 【请教有关Panel控件的使用问题,知道的请指教!】
- Delphi + MO 做GIS系统是否BUG比较多?
- 知道了窗体的句柄,请问如何通过这个句柄获得该应用程序的完整路径?
- 一个表中有一个字段是姓名,我要把这些名字一个一个添加到TREEVIEW控件去!用ADOTABLE控件的!如何做?
- 鼠标一碰到某一文字时,此文字就会变颜色,请问这怎么实现?
- CSDN离线浏览器?
- apache 發布intraweb生成的.so時出現不能識別aliasname
- 马甲也升星乐,散分874一下.[散分贴]
//尚未声明BASS_MIDI_FONT,HSTREAM
P_BASS_MIDI_FONT = ^BASS_MIDI_FONT; F_BASS_MIDI_FontInit= function(const file:PChar;flags:DWORD):HSOUNDFONT;stdcall;
F_BASS_MIDI_StreamSetFonts= function(handle:HSTREAM;const fonts:P_BASS_MIDI_FONT;count:DWORD):BOOL;stdcall;
var
bassmidi: HMODULE;
sf: BASS_MIDI_FONT;
sfont: HSOUNDFONT; BASS_MIDI_FontInit:F_BASS_MIDI_FontInit;
BASS_MIDI_StreamSetFonts :F_BASS_MIDI_StreamSetFonts;
begin
bassmidi := GetModuleHandle('bassmidi.dll');//bassmidi.dll 是一個庫文件
if (bassmidi<>nil) then
begin
BASS_MIDI_FontInit:=GetProcAddress(bassmidi,'BASS_MIDI_FontInit');
BASS_MIDI_StreamSetFonts:=GetProcAddress(bassmidi,'BASS_MIDI_StreamSetFonts'); sf.font :=BASS_MIDI_FontInit('chorium.sf', 0);//chorium.sf2是一個音色文件 if (sf.font > 0) then // soundfont opened
begin
sf.preset :=-1; // use all presets
sf.bank :=0; // use default bank(s)
BASS_MIDI_StreamSetFonts(0, @sf, 1); // set default soundfont end;
end;
end;
这是一个DLL动态调用的代码吧.数据类型不熟悉,所以下面的转换代码可能无法编译,只是根据语法进行了一些转换.楼主自己再分析下吧. :)
type
TBASS_MIDI_STREAM_Ref=function (const AFile; flags:DWORD):HSOUNDFONT stdcall;
TBASS_MIDI_FontInit_Ref=function (handle:HSTREAM, var fonts:BASS_MIDI_FONT; count:DWORD):boolean;stdcall;var
dllHandle:THandle=0;
MIDI_STREAM_REF:TBASS_MIDI_STREAM_Ref;
MIDI_FONTINIT_REF:TBASS_MIDI_FontInit_Ref;
sf:BASS_MIDI_FONT;try
dllhandle:=loadlibrary('bassmidi.dll');
if dllhandle>0 then
begin
MIDI_STREAM_REF:=GetProcAddress(dllHandle, "BASS_MIDI_StreamSetFonts");
IF MIDI_STREAM_REF>0 THEN
begin
sf:=MIDI_FONTINIT_REF('chorium.sf2',0);
if sf.font>0 then
begin
sf.preset:=-1;
sf.bank:=0;
MIDI_STREAM_REF(0,@sf,1);
end;
end; end;
finally
freelibary('bassmidi.dll');
enb;
特別感謝 回复人:do2008(事情做好了,才是事情) ( 一星(中级)) 信誉:100
以及 回复人:dinglinger(红辣椒) ( 五级(中级)) 信誉:100
給出正確的翻譯代碼://==============================================
type
P_BASS_MIDI_FONT = ^BASS_MIDI_FONT; F_BASS_MIDI_FontInit = function(const sfile: PChar; flags: DWORD): HSOUNDFONT; stdcall;
F_BASS_MIDI_StreamSetFonts = function(handle: HSTREAM; const fonts: P_BASS_MIDI_FONT; count: DWORD): BOOL; stdcall;//======================================
var
bassmidi: HMODULE;
sf: BASS_MIDI_FONT;
sfont: HSOUNDFONT;
BASS_MIDI_FontInit: F_BASS_MIDI_FontInit;
BASS_MIDI_StreamSetFonts: F_BASS_MIDI_StreamSetFonts;
//======================================
bassmidi := GetModuleHandle('bassmidi.dll');
if (bassmidi <> 0) then
begin
BASS_MIDI_FontInit := GetProcAddress(bassmidi, 'BASS_MIDI_FontInit');
BASS_MIDI_StreamSetFonts := GetProcAddress(bassmidi, 'BASS_MIDI_StreamSetFonts'); sf.font := BASS_MIDI_FontInit('Chorium.SF2', 0); if (sf.font > 0) then // soundfont opened
begin
sf.preset := -1; // use all presets
sf.bank := 0; // use default bank(s)
BASS_MIDI_StreamSetFonts(0, @sf, 1); // set default soundfont
end;
end;
//=======================================