(1)用atl7.0向导生成了一个复合控件,类名是CMyCtl,默认有个对话框资源,请问这个对话框和CMyCtl之间是什么关系呢?
(2)如果CMyCtl就代表这个对话框,那么它为什么没有从CDialogImpl继承而来呢?
(3)在这个类中的m_hWnd成员是继承自哪个类呢?
(4)在vs2003中,怎么找不到生成“full control"的向导,怎么找到它?注:CMyCtl派生自:CComObjectRootEx,IDispatchImpl,IPersistStreamInitImpl,IOleControlImpl,
IOleObjectImpl,IOleInPlaceActiveObjectImpl,IViewObjectExImpl,IOleInPlaceObjectWindowlessImpl,
ISupportErrorInfo,IPersistStorageImpl,ISpecifyPropertyPagesImpl,IQuickActivateImpl,
IDataObjectImpl,IProvideClassInfo2Impl,CComCoClass,CComCompositeControl(万分感谢各位的指导!!!)

解决方案 »

  1.   

    建议先搞懂COM。
    ----------------------------------------------------------------------------
    谢谢回复,com的书我也看过不少,《com本质论》《com原理及应用》《com技术内幕》都看过,大道理也懂一些。
    不过我很缺实际动手经验。希望大家能就上述具体问题给予我回复,谢谢!
      

  2.   

    那个对话框,很可能是个About的对话框
    m_hWnd是IOleControlImpl中的成员
    CMyCtl是一个OleControl继承的
    另外没有用VS2003写过ActiveX,所以请别人来讲
      

  3.   

    m_hWnd是IOleControlImpl中的成员
    --------------------------------------------------
    msdn中好像没说m_hWnd是IOleControlImpl的成员吧!查看msdn,m_hWnd好像是CWindow的成员,我的疑惑是CMyCtl并没有从CWindow派生,那么它的m_hWnd从哪里来的呢?
      

  4.   

    这个Dialog就是承载你的所有复合控件的容器,也就是所有的控件都要放在这个Dialog上,你可以在这里Dialog上设计你的复合控件,在现在的工程里面找不到哪里用了这个Dialog,但是在CComCompositeControl 类中使用了enum { IDD = IDD_MYCTL }所定义的这个IDD第二个问题,我猜应该是因为你建立的是一个的控件,而不是一个Dialog,虽然这个控件也是用Dialog做容器的。
    m_hWnd在CWindow里面定义的。这个继承链是相当的长CComCompositeControl CComControl CWindowImpl CWindowImplBaseT CWindow最后不清楚你说的Full control是什么,6.0我没有怎么用com
      

  5.   

      还没大明白楼主的意思 ,能否描述详细点
    大致的意思我觉得你那个对话框是CABOUT的对话框,其它的楼主应该清楚了吧