关于调用waveinopen函数的问题 ( 积分: 50 )

  • 主题发起人 主题发起人 hitppcat
  • 开始时间 开始时间
H

hitppcat

Unregistered / Unconfirmed
GUEST, unregistred user!
采用CALLBACK_FUNCTION方式总是不能成功
WaveHandle:=new(PHWaveIn);
WaveFormat:=new(PWaveFormatEx);
WaveFormat.wFormatTag:=WAVE_FORMAT_PCM;
WaveFormat.wBitsPerSample:=16;
WaveFormat.nSamplesPerSec:=11025;
WaveFormat.nAvgBytesPerSec:=22050;
WaveFormat.nBlockAlign:=2;

WaveInOpen(WaveHandle,WAVE_MAPPER,WaveFormat,DWORD(@WaveInProc),0,CALLBACK_FUNCTION)
第5个参数不知道怎么设置,程序总是异常退出
高手帮忙,指点迷津啊!
 
第五个是传个回调函数的一个参数啊
procedure WaveInProc(
hwi: HWAVEIN;
uMsg: UINT;
dwInstance: DWORD;
dwParam1: DWORD;
dwParam2: DWORD
);
就是这个dwInstance啊
你的回调函数定义正确了没?
 
这位大哥,该如何定义dwInstance
能不能给段代码
我做的是控制台程序
 
我上面的那个函数就是正确定义啊,你抄过去就行了。。。
那个参数是给你用的,你在WaveInOpen(WaveHandle,WAVE_MAPPER,WaveFormat,DWORD(@WaveInProc),0,CALLBACK_FUNCTION)传的是0,所以回调函数中得到的dwInstance也是0.
很多时候会传一个指针进去,回调的时候用(当然定义一个全局变量也可以实现,但不推荐)
 
我定义的waveinproc函数是这样的
procedure WaveInProc(uMsg,dwInstance,dwParam1,dwParam2 : DWORD);stdcall;
begin

writeln('done');
end;

传的参数是GetCurrentThreadID()

按照你的提示,我加了hwi:HWAVEIN上去
但是dwInstance这个参数怎么设置啊getcurrentthreadid不行
 
没有stdcall吧
 
自己搞掂了!原来是WaveFormat结构的参数未设置正确
 
接受答案了.
 
后退
顶部