▼ takiさん
> そのアドレスでabuf1もしくはabuf2の配列を操作したいのです。
こういうのは難しいですね.
コーディングの好みもあるかも知れません.
メッセージの処理の部分だけ.例えばです.
動作確認は Windows 7 U64(SP1) + Delphi XE(UP1) Pro です.
implementation
{$R *.dfm}
type
Tabuf = array[1..44100] of smallint;
var
abuf1:Tabuf;
procedure TForm1.Button1Click(Sender: TObject);
begin
abuf1[1] := 100;
// PostMessage(Handle, MM_WOM_DONE, 0, LPARAM(@abuf1[1]));
PostMessage(Handle, MM_WOM_DONE, 0, LPARAM(@abuf1));
end;
// 引数の型をTaBufにした方が処理がしやすいかな,と...
procedure SetWaveData(var buf: Tabuf);
begin
buf[1] := buf[1] + 500;
buf[3] := 133;
end;
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
var
LpBuf : ^Tabuf;
LText : string;
begin
if Msg.message = MM_WOM_DONE then begin
LpBuf := Pointer(Msg.lParam);
SetWaveData(LpBuf^);
LText := IntToStr(LpBuf[1]) + sLineBreak + IntToStr(LpBuf[3]);
MessageBox(Handle, PChar(LText), '結果', MB_ICONINFORMATION);
end;
end;
 |