Delphi控件SPComm改造为Lazarus版本的问题

有一Delphi串口通信控件SPComm,在D下很好使,本人想把它改造为Lazarus版本,而就在控件的Create和Destroy里面卡壳了,在构造函数里有一段代码:

if not (csDesigning in ComponentState) then
        FHWnd := AllocateHWnd(CommWndProc); 


这是一个消息的传递的语句,把串口的消息传递到创建的一个不可视的窗体中处理,在Lazarus里编译安装包,没问题,但是使用时,一创建就出错,查看了

一下代码,发现是AllocateHWnd的引用不一样,在D下:调用的是

function Forms.AllocateHWnd(Method: TWndMethod): HWND;
begin
{$IFDEF LINUX}
  Result := WinUtils.AllocateHWnd(Method);
{$ENDIF}
{$IFDEF MSWINDOWS}
  Result := Classes.AllocateHWnd(Method);
{$ENDIF}
end;


而在Lazarus下,变成调用了

function Classes.AllocateHWnd(Method: TWndMethod): HWND;
  begin
    { dummy }
    runerror(217);
    Result:=0;
  end;


 上BD搜了一下,发现AllocateHWnd应该调用WidGetSet.AllocateHWnd函数才行,还是因为自已对Lazarus不熟悉,经过改造,可以正常发送接收数据;

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值