我现在有一个别人的ActiveX控件——A。A是有窗口的现在想做另外一个控件B,控件B中包含控件A,B控件有没有窗口不限。当前讨论这个问题认为B是有窗口的。我现在有几个问题不清楚:1.控件这种包含关系是不是需要采用别的技术?ATL?具体的复合控件的定义到底指的是不是ActiveX包含ActiveX?2.我尝试把控件A加到控件B中,在B的工程里面我如何初始化这个有窗口的A,并将控件A放在某个位置?
现在的情况:我使用控件A的Creat函数创建窗体时出错。3.创建ActiveX控件时,是不是控件的窗口只能像View类一样的当文档窗体?能不能是Dialog?

解决方案 »

  1.   

    1)和有窗无窗无关,为子Com控件提供Site,实现一套COM接口来和子Com控件通讯(ATL用CComCompositeControl基类来支持复合控件)
    2)同上
    3)都可以,象ATL就提供了CAxDialogimpl和CAxWindow
      

  2.   

    http://topic.csdn.net/t/20010108/14/56277.html 已经解决该问题。引用:
    1 楼onjun(俊on)回复于 2001-01-08 14:32:00 得分 43我刚好做过,告诉你吧。   
        
      1、用MFC   ActiveX   ControlWizard创建工程test;   
      2、在BOOL   CTestApp::InitInstance()中第一行添加函数:   
      AfxEnableControlContainer();   
      3、在类CTestCtrl中添加Microsoft   Media   Player   Control   (你已经导入的类名)   
        
      类变量(对象)m_wmp;   
      4、为类CtestCtrl添加OnCreate消息;   
      5、在CtestCtrl::OnCreate()中创建Microsoft   Media   Player   Control对象   
            m_wmp.Create();   
      6、为类CTestCtrl定制方法--给VBScript   or   JScript   使用;   
        
      你可以在创建m_wmp之后,指定缺省音频文件名,并设定多媒体播放器自动播放,   
      这样,网页打开后,控件下载完毕,自动播放。
    //----------------
    谢谢yxz_lp 的回复!
    给分结贴!