|
|

楼主 |
发表于 2008-6-30 01:51:00
|
显示全部楼层
Re: Re:我改学C++,用C++开发游戏,是不是一个错?
ricohcanon: Re:我改学C++,用C++开发游戏,是不是一个错?
嗯,有道理。想必是楼主看到游戏之家用VB做了不少游戏后,觉得自己抛弃VB有些可惜而发此感慨吧?毕竟楼主也是精通VB的。 [em17]
呵呵,确实如此。
在我看来,C++是最最美妙的语言,只有C++才是王道,可是,一些VB6用户居然。。
所以时而不免会有些感触啊。
===================
托各位的福,在不修改现有C++代码的前提下,我已经解决了Event的COM封装,以及包装成COM时我的RTTI的兼容性问题。可以从我C++的某个接口型,"Cast"到外围的com包装类的IUnknown,这很重要,可以实现接口和COM包装后的down-cast。方法是:
首先继承我的某个C++类,比如
class _CButton_ : public inst::ui::CButton { IUnknown *pOuter;
并重写 Cast 方法。对于参数"COM@IUnknown" 返回 pOuter。
而 ::CButton (CoClass) 包含 _CButton_ 并保持一个在virtual根类的RefCount.
为什么不直接让CoClass继承CButton?这是因为RefCount,我不想改原有代码
Event也非常有意思。其实,我Event主要是通过队列实现的。但不采用恶心的消息映射,而用动态回调。但本质却是队列。要支持COM也很简单,只要在RaiseEvent的时候多加一个事件代码,而且不管有没有handler,都放入队列(把handler队列当作MSG队列用),不过,我不想改动原来代码,所以,
可以让包装的COM类,添加handler到被包装的对象的所有Event中,等到接受到事件时,
用COM, VB可以支持的方法,通知VB程序(用消息队列,或ActiveX标准的event)
|
|