秋·风

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

修复pl_cindy的Panel系列控件在gtk3出错的bug

lazarus trunk使用pl_cindy的Panel系列控件时在gtk3在有个严重的bug,在ide拖入cyPanel等Panel控件或代码生成的控件有caption有文字时会出现:

image

经排查,发现绘制caption的文字时,执行到cyGraphics.pas单元的cyDrawText出错。

procedure cyDrawText(const CanvasHandle: Cardinal; const Text: String; var Rect: TRect; TextFormat: LongInt);
的DrawText(CanvasHandle, PChar(Text), -1, Rect, TextFormat);//执行到这行出错

这个单元CanvasHandle定义为Cardinal与lclintf定义DrawText(DC:HDC;str:PChar;Count:integer;var rect:TRect;flage:Cardinal)不一样。
修复方法:

procedure cyDrawText(const CanvasHandle: Cardinal; const Text: String; var Rect: TRect; TextFormat: LongInt);

改为:

procedure cyDrawText(const CanvasHandle: HDC; const Text: String; var Rect: TRect; TextFormat: LongInt);

重新编译pl_cindy就可以。

posted on 2026-08-25 07:46  秋·风  阅读(30)  评论(1)    收藏  举报