求教如何转换指针。(50分)

  • 主题发起人 主题发起人 adward
  • 开始时间 开始时间
A

adward

Unregistered / Unconfirmed
GUEST, unregistred user!
我写了一个过程处理 MM_WOM_OPEN 消息,得到的lparam参数应该是PWaveHdr的值,
可是居然得不到wavehdr。PWaveHdr(lparam) 或者 Pointer(lparam)都无法cast
到pWaveHdr, 如何转换好呢?Delphi好像不如VC好用啊。
 
这样写试试:
...
Header:=PWaveHdr(msg.lparam);
...
 
咦,好像可以。居然要指明msg?
谢谢杜宝大大。
不过... 接下来,要得到wavehdr的lpData
用来指向一个Buffer块,为啥 Header.lpData
或 Header^.lpData 都不行?

我是不是很笨?[?][?]
 
可以,不过等号左边的变量一定要定义成pchar或pointer
 
procedure BufferDone(var Msg: TMessage);
message MM_WOM_DONE;
var
Header:PWaveHdr;
begin

Header:=PWaveHdr(msg.lparam);
FillBuffer (Header^.ldData);
WaveOutWrite (...
...
end;


其中,FillBuffer的参数是PChar,
编译错误是 FillBuffer--Not enough actual parameter
这是社么道理?


 
呵呵,总算解决了。
 
多人接受答案了。
 
后退
顶部