我想让我的应用程序兼容 64 位。我正在努力处理 PostMessage 和 LPARAM。我通过 PostMessage 发送一个类的实例。我想知道将值test_data转换为 LPARAM 是否正确。
请看一下下面的代码:
// Data to send
TMyData=class
Data1: string;
Data2: byte;
Data3: TDateTime;
end;
// send
procedure TTestClass1.PostTestData(AData1: string; AData2: byte; AData3: TDateTime);
var
test_data: TMyData;
begin
test_data:= TMyData.Create;
test_data.Data1:= AData1;
test_data.Data2:= AData2;
test_data.Data3:= AData3;
PostMessage(my_handle,WM_MY_MESSAGE,0,LPARAM(test_data));
end;
// receive
procedure TTestClass2.Message_WM_MY_MESSAGE(var Msg: TMessage);
var
test_data: TMyData;
begin
test_data := TMyData(Msg.LParam); // is this also compatible with 64 Bit?
try
// Do some work
finally
test_data.Free;
end;
end;
Run Code Online (Sandbox Code Playgroud)
上面的代码兼容64位吗?