• 忘掉天地
  • 仿佛也想不起自己
bingliaolongBingliaolong  2022-06-02 11:37 Aet 隐藏边栏 |   抢沙发  11 
文章评分 3 次,平均分 5.0

导出SOUI对象到Lua

  1. 为了在SOUI中使用lua,需要使用lua内核实现一个SOUI::IScriptModuler接口。

  1. 导出SOUI对象通常应该在IScriptModule的实现类的构造中执行

  1. 在lua中使用

事件分发处理

  1. 在MFC中,一个类要处理消息,这个类通常派生自CCmdTarget,主窗口收到的消息会自动路由到这个消息处理对象中。
  2. 在WTL中,WTL提供了一组消息映射宏:CHAIN_MSG_MAP,CHAIN_MSG_MAP_MEMBER等以便将消息分发到同样实现了消息映射表的任意C++对象。
  3. SOUI的事件分发采用了WTL消息分发类似的机制,同样采用事件映射宏的方式来构造事件映射表

  1. CHAIN_EVENT_MAP_MEMBER宏将来自不同页面的控件事件传递到不同的事件处理对象中

  1. 如果基类中没有事件处理函数,显然这个事件映射表编译不能通过,此时SOUI提供了另一个EVENT_MAP_BREAK()来代替。

  1. 如果在不同的页面中出现相同的控件名,要怎么处理:
    1. 响应WM_INITDIALOG,在OnInit里面保存一个页面的根节点的指针m_pPageRoot
    2. 在事件映射表的开始,采用EVENT_CHECK_SENDER_ROOT(M_pPageRoot)来识别那些来自本页面的事件,对其他页面的事件不处理。

自定义控件

  1. 选择合适的基类
  2. 添加控件标签

  1. 有需要,添加消息映射表,并响应目标消息
  2. 有需要,添加属性映射表,添加相关属性的响应

图示

模块结构图

框架结构图

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

bingliaolong
Bingliaolong 关注:0    粉丝:0
Everything will be better.

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享