刚接触COM,有问题请教各位大虾:
我写了一个支持MFC的进程内COM组件程序
现在想在客户程序调用组件程序时,把客户程序中的一些MFC对象指针传递到组件程序中作为类的数据成员(也是一个MFC类对象指针)
应该用什么数据类型呢?传递资源MFC类对象(如CWnd)和普通类对象的指针时,是否有什么区别?

解决方案 »

  1.   

    这种情况,我觉得你使用DLL就好,不要用COM
      

  2.   

    你的问题:MFC对象指针传递到组件
    回    答:可以实现
    我的观点:得不偿失实现方法:
    1.利用MFC提供的序列化,这方面我就不多说
      codeguru,codeproject上有同一篇文章,你可以自己搜搜,看看
    2.利用IStream,在客户端将你的类序列化,然后在组件里反序列化总结:但无论那种方式,传递的数据都是2进制,直接传递MFC class ,IDL是不答应的补充:如果是一般的CLASS,就容易多了(多少模仿于“接口着色”)
    简单说明:将你的类的函数都改为纯需函数,也就是定义一个纯需基类(其实就是COM的接口),然后你在派生并实现它(在组件里),你的客户端和组件的交互都是通过这个纯需基类
      

  3.   

    楼主明白说的是进程内组件,并没有说跨越进程边界呀,大伙干吗还要绕这么大的弯子非得把整个类对象都复制过来复制过去的?
    直接传递一个void*(或者更绝点:DWORD),然后用它的那边再转换对应对象的指针就ok了呀。
      

  4.   

    呵呵,这样的就是普通DLL,为什么非要说是COM呢,烟花说的方法可行,但是不好。
    http://blog.csdn.net/loveghb/archive/2005/12/23/560209.aspx
    去看我的BLOG,看不懂别来找我
    ;)
      

  5.   

    看了楼上兄弟的blog了,还行,基本上就是小小的"借用"了一下COM重用模型当中的"包容"的概念,不过确实是解决问题的最好办法,楼主你可以结贴了我认为。