基于IDL高级培训基础篇.pptVIP

  • 1
  • 0
  • 约2.82万字
  • 约 111页
  • 2017-08-20 发布于湖北
  • 举报
编程篇 -数据传递 有问题发生 事实上,sState是一个局部变量,因此当绑定给TLB_ID时,是copy了一份到全局内存。而当事件处理程序获得用户数据时,又是从全局内存中copy一份到该事件处理程序的局部变量中。于是,一份数据就有了3份copy。 指定/NO_COPY关键字,就只使用一份。 烦恼: (1)copy一事会给我们带来烦恼。因为一旦no_copy,则当前的用户数据变量就不再有效。这意味着返回用户数据的命令应该是事件处理程序的最后一行,显然这是不现实的。 (2)事实上,必须返回用户数据才会使修改有效这件事也会给我们带来烦恼,这要求我们必须时刻保持警惕!是不是精神会有点紧张?:) 编程篇 -数据传递 解决的方法 用一个指针变量可以解决这个问题! (我们不必等IDL把用户数据copy到全局内存,我们有能力自己干!) TLB: sState={ … } pState=ptr_new(sState ,/no_copy) widget_control ,TLB_id ,set_uvalue=pState EH: widget_control ,ebent.top ,get_uvalue=pState 这时,*pState 就是 sStat

文档评论(0)

1亿VIP精品文档

相关文档