一个waveOutOpen的问题(50分)

  • 主题发起人 主题发起人 mapi
  • 开始时间 开始时间
M

mapi

Unregistered / Unconfirmed
GUEST, unregistred user!
若指定waveOutOpen中参数dwFlags为CALLBACK_WINDOW类型<br>那么要指定一个窗口句柄给dwCallback,我采用我们普通delphi集成环境下new的窗口的<br>句柄给它,waveoutopen()调用老是不成功啊,返回值是32,表示“不支持的波形格式”,<br>可是实际上还没到播放的时候呢。<br>1.不知这样行不行啊?<br>2.我看waveoutopen的讲解中说:回调函数必须位于动态连接库中且被限定在回调函数中<br>产生的系统调用。不知这是否意味着调用这个函数必须只能在控件和DLL格式中啊,<br>是不是waveoutopen给DLL中的某个调用才行啊?<br>我的问题有点乱,望勿见怪<br>谢谢<br>
 
没有啊,我一直在Delphi中用waveOutOpen!
 
你能否提供一个例子给我,我现在计较急啊<br>我的地址是xuext@263.net<br>非常感谢
 
就给你发,不知能否发得出:(
 
教育网的email也行<br>xuext@fzu.edu.cn
 
TMD老是发不去处:( , 贴上来算了(测试过的)<br>uses Mmsystem;<br>procedure TForm1.Button1Click(Sender: TObject);<br>var<br>&nbsp; i: Integer;<br>&nbsp; hwo: HWAVEOUT;<br>&nbsp; wfx: TWAVEFORMATEX;<br>&nbsp; woh: TWAVEHDR;<br>&nbsp; WaveBuffer: Array[0..2047] of Byte;<br>begin<br>&nbsp; for i := 0 to 1203 do<br>&nbsp; &nbsp; WaveBuffer := Round(128+32*Sin(i));<br>&nbsp; wfx.nChannels := 1;<br>&nbsp; wfx.wBitsPerSample := 8;<br>&nbsp; wfx.nSamplesPerSec := 11025;<br>&nbsp; wfx.wFormatTag := WAVE_FORMAT_PCM;<br>&nbsp; waveOutOpen(@hwo,0,@wfx,Handle,0,CALLBACK_WINDOW);<br>&nbsp; with woh do<br>&nbsp; &nbsp; begin<br>&nbsp; &nbsp; lpData := @WaveBuffer[0];<br>&nbsp; &nbsp; dwBufferLength := 1024;<br>&nbsp; &nbsp; dwBytesRecorded := 0;<br>&nbsp; &nbsp; dwUser := 0;<br>&nbsp; &nbsp; dwFlags := 0;<br>&nbsp; &nbsp; dwLoops := 0;<br>&nbsp; &nbsp; lpNext := nil;<br>&nbsp; &nbsp; reserved := 0;<br>&nbsp; &nbsp; end;<br>&nbsp; waveOutPrepareHeader(hwo,@woh,SizeOf(TWAVEHDR));<br>&nbsp; waveOutWrite(hwo, @woh, sizeof(TWAVEHDR));<br>&nbsp; waveOutUnprepareHeader(hwo,@woh,sizeof(TWAVEHDR));<br>&nbsp; waveOutClose(hwo);<br>end;
 
再次感谢reboot!<br>第一次来此站就受到你的热情帮助!<br>分数不多,谨表谢意
 
后退
顶部