在调用很多用c++或者其他语言写的dllapi函数的时候,你会发现有些api函数的参数是直接与回调函数作为参数的!那么在windows,你要是用委托来承接这样的回调,自然不会出现什么大的问题,基本上是可行的!但是在wince5.0以下,它只支持简单的回调,那么何为简单回调呢?

 这里只是一种简单的名称,它就是具有带有简单参数(如:int,byte,string等)的回调函数。而为什么只支持这样的回调,这是一种平台的约束!所以如果你要支持复杂参数的话(如结构体,byte数组等),那么你有两个解决方案:

一.把复杂参数变简单化。就是将结构体中参数变简单类型!

二.不用回调,这也是我们所推崇的,因为,回调的话,它需要cpu去寻找我们所在的函数指针,然后去定位函数体,最终返回回调值,效率虽然不会有很大的影响,但对于wince来说,还是能省就省!当然如果你真想用回调的话,那么建议你用第一种方案!

   以上是我在开发项目中遇到的问题,并实现的方案!可能还有其他更好方案,那只能等高人指点,或者自己碰到了,再补充进来!

posted on 2008-02-13 11:13  MRChen  阅读(267)  评论(1编辑  收藏  举报