Quantcast
Channel: C++博客-所有随笔
Viewing all articles
Browse latest Browse all 7882

lua cpp混编-处理事件响应

$
0
0
目前觉得比较好的做法,C++写具体控件效果,lua处理事件响应
<EventList>
    <Event Name="OnCreate" File="LogonWnd.xml.lua" Func="MSG_OnCreate"/>
</EventList>

function MSG_OnCreate(self)
i = 0
print(self)
end

self为事件源注册到lua中的类型事例。

迅雷界面库中还有另一种做法:

function OnInit()

local owner = self:GetOwner()

              local objFactory = XLGetObject("Xunlei.UIEngine.ObjectFactory")
              local newIcon = objFactory:CreateUIObject("icon2","ImageObject")
              local xarManager = XLGetObject("Xunlei.UIEngine.XARManager")
              newIcon:SetResProvider(xarManager)
              newIcon:SetObjPos(45,165,45+70,165+70)
              newIcon:SetResID("app.icon2")
              local function onClickIcon()
                   XLMessageBox("Don't touch me!")
              end
              newIcon:AttachListener("OnLButtonDown",true,onClickIcon)
              self:AddChild(newIcon)
end

直接在lua层处理事件,貌似更舒服了。但是所引用的函数不能是上层C的,也不能有self参数了,否则内存管理又是一大害处。
这里的AttachListener应该和上层的Wnd类或者对应的派发消息的CPP里边的《EventList》关联,貌似这样能动态添加消息处理器,而且不用担心对象生命周期管理。



Enic 2014-06-19 11:56 发表评论

Viewing all articles
Browse latest Browse all 7882

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>