http://community.csdn.net/Expert/topic/3750/3750462.xml?temp=.5289118
http://community.csdn.net/Expert/topic/3713/3713232.xml?temp=.603985
我已经实现了把一个FormView封装到DLL中,并能够在MDI中加载它,可是这离标准的COM还是差很远。
我在加载DLL中的FormView的时候,要LoadLiebry(),还要函数指针,真的很麻烦,所以想把FormView封装到一个COM中,这样在创建的时候就简单多了,用CoCreateInstance或者DllGetClassObject创建起来都简单。问题是:  我不知道怎么封装!
1、 我的FormView要从 CFormView和IUnknow 多重继承出来,  我想我做不到 MFC不支持吧~
2、在创建的时候我要用Create或者LoadFrame来加载它,这个时候需要数个外部的变量,我也不知道用CoCreateInstance或者DllGetClassObject的时候怎么把外部的变量传递进去
3、 我还需要EXE中的几个.h  这让我不能开发出独立的插件了  请问如何解决这个问题

解决方案 »

  1.   

    应当没有问题的,若用activex来实现COM,要更简单一些
      

  2.   

    这个问题还是研究一下。
    1、希望楼主能把dll的实现简单贴一下。
    2、“CoCreateInstance或者DllGetClassObject”似乎无法把外部变量传进去吧。这个你可以在创建了对象后在进行赋值。
    3、COM也不是必须要.h文件啊,你可以看看调用COM的N中方法;另外,可以做成ActiveX。
      

  3.   

    1、希望楼主能把dll的实现简单贴一下。
       就是把主框架指针 MainFrm传进去 然后在dll里面调用LoadFrame 代码不在这太机器上2、“CoCreateInstance或者DllGetClassObject”似乎无法把外部变量传进去吧。这个你可以在创建了对象后在进行赋值。
        你说的是创建那个对象?  如果是创建FormView的话 这些变量都是创建的时候用的
        CoCreateInstance里面是不是不能直接创建FormView啊? 3、COM也不是必须要.h文件啊,你可以看看调用COM的N中方法;另外,可以做成ActiveX。
         我COM很烂的  回去慢慢看书 谢谢你     顶
      

  4.   

    应当没有问题的,若用activex来实现COM,要更简单一些
    -------------------不是简单不简单的问题 是我不知道在那个地方创建FormView  我总不可以new一个FormView出来吧
      

  5.   

    1、希望楼主能把dll的实现简单贴一下。
       就是把主框架指针 MainFrm传进去 然后在dll里面调用LoadFrame 代码不在这太机器上
    --这样的话,我觉得这个问题你可以不必太关心了,大不了调用COM接口对属性进行赋值嘛。2、“CoCreateInstance或者DllGetClassObject”似乎无法把外部变量传进去吧。这个你可以在创建了对象后在进行赋值。
        你说的是创建那个对象?  如果是创建FormView的话 这些变量都是创建的时候用的
        CoCreateInstance里面是不是不能直接创建FormView啊? 
    --是的,是不能创建,因为FormView的基类不是IUnknow!!!3、COM也不是必须要.h文件啊,你可以看看调用COM的N中方法;另外,可以做成ActiveX。
         我COM很烂的  回去慢慢看书 谢谢你     顶
      

  6.   

    不建议封装FormView……所有MFC视图都假定父窗口为框架类对象。
      

  7.   

    up learn
    不懂 蒋晟的話? 
     
       
    所有MFC视图都假定父窗口为框架类对象。