登录 用户中心() [退出] 后台管理 注册
   
您的位置: 首页 >> SoftHub关联区 >> 主题: [golang/govcl/坑] govcl 中尽量不要使用闭包函数     [回主站]     [分站链接]
[golang/govcl/坑] govcl 中尽量不要使用闭包函数
clq
浏览(376) - 2024-01-14 16:46:04 发表 编辑

关键字:

[golang/govcl/坑] govcl 中尽量不要使用闭包函数

至少不要在闭包函数间传递 govcl 的控件指针。

govcl 的作者其实已经说过了,不过感觉作者对 golang 的指针理解不深(不过 golang 已经对一些指针特别是 cgo 和 unsafe 下的一些东西确实没有明确说法,只有些习惯用法)。
可能他也没有太多时间去测试各种情况,只是他发现了这种现象,所以做了备注而没有去处理。它还在 govcl 的各个控件指针声明中说明了 golang 的 gc 对指针要特殊处理。只不过他还没来得及全部处理清楚。


//--------------------------------------------------------

func SetIconOnRClick(rootview * vcl.TPanel, view * vcl.TPanel, info * TGovcl_ControlInfo_Item) {

info.ExFileType = "config_file"; //表示文件内容是配置信息,下载得到后还要二次处理

//var view2 = view;

//view2.Hide(); //test 奇怪,有些就是不行 //这里还是可以的,可能是 go 的 gc 与 govcl 的冲突了

view.SetOnContextPopup(func(sender vcl.IObject, mousePos types.TPoint, handled *bool) {

var x = mousePos.X;
var y = mousePos.Y;

var view3 = vcl.AsPanel(sender);


//ShowIconMenu((*vcl.TPanel)(view.Parent().Parent()), view);
//ShowIconMenu(rootview, view, x, y);
ShowIconMenu(rootview, view3, x, y); //用 view 有时候是错误的,而用事件中强制转换过来的 view3 则都是正确的。所以说明 govcl 中的说明是正确的
//即闭包函数中传递 govcl 的指针时有可能会出错

//view.Hide(); //test 奇怪,有些就是不行
//view2.Hide(); //test 奇怪,有些就是不行




*handled = true; //意思是不要弹出默认菜单

});

}//








总数:0 页次:1/0 首页 尾页  
总数:0 页次:1/0 首页 尾页  


所在合集/目录
golang的坑 更多
govcl 更多



发表评论:
文本/html模式切换 插入图片 文本/html模式切换


附件:



NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.

Copyright © 2005-2020 clq, All Rights Reserved
版权所有
桂ICP备15002303号-1