比如说我想在我的界面上放一个注册过的ActiveX控件---DBGrid,我当然需要在程序中通过该对象的成员函数动态地修改其属性,而不是在资源管理器中修改其属性,但是我在MSDN(Visual Studio6.0的)中没有找到该类---CMsDgridCtrl,是不是由于所有的ActiveX控件(包括已经在VC中注册过的)提供的成员函数都相当简单-----和它在资源管理器的属性对话中提供的修改完全一致(而不像一般的C++控件),所以就没有帮助了?请指点,多谢!

解决方案 »

  1.   

    不会吧,可即然定义了CMsDgridCtrl public CWnd, 在VC中就应该有帮助呀?
    难道它的成员函数和 VB中的DataGrid对象的属性和方法提供的完全一致?
    请问平时你们如果要使用一个ActiveX控件的时候是如何获得帮助的?
      

  2.   

    事实上你打开cmsdgridctrl就会发现他只是一个包装类而已。
    他的每个成员函数都有VB中的方法和属性对应(属性在VC中也被定义成方法分别get和put),而这些函数的实现就是简单的转发而已,他直接用datagrid对象的idispatch接口的invoke进行调用。
      

  3.   

    可能我说得不是太清楚,这样吧,大侠,我举个例子,比如说我现在想使用一个Cimagecombo
    (来自microsoft imagelist 6.0),就是那种带图片的COMBO,我猜想它可能要设一个imagelist什么的,于是我就找它的成员函数:
    void CImageCombo::SetImageList(LPDISPATCH newValue)
    {
    static BYTE parms[] =
    VTS_DISPATCH;
    InvokeHelper(0x3, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
     newValue);
    }
    我记得以前使用类似的VC Control 时要提供一个CImageList *p的参数,可它的参数却是LPDISPATCH newValue
    搞不懂,我究竟该如何使用这些active X的成员函数呢?
    即如何获得ActiveX相关的帮助呢?
      

  4.   

    你应该先学学COMSetImageList的参数是指向imagelist控件的dispatch接口指针.
      

  5.   

    呵呵(苦笑中),使用activeX控件那么难啊,我已经改过了,可是
    一个 Cimagecombo activeX控件,
    一个 Cimagelist activeX控件,并且静态添加了图片集,由于在它们的属性框中没有发现有相联的地方,发现 Cimageist有一个成员函数如下:
    LPDISPATCH CImageList1::GetListImages()
    {
    LPDISPATCH result;
    InvokeHelper(0x4, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&result, NULL);
    return result;
    }我想当然地
    m_imagecombo.SetImageList(m_imagelist.GetListImages());
    提示无效的对象???Active控件难道不是为了方便开发而推出的吗?为什么会没有帮助?
    实在不行,就算了!
      

  6.   

    在VB上是很方便的,可是VC就不行了.
      

  7.   

    另外,楼主真是太过想当然了.
    甚至想当然的认为我是有义务来这个贴子的.sigh