rt

解决方案 »

  1.   

    也可以作为CComObject模板类的参数,直接实例化后调用相关的类方法
      

  2.   

    我做了一个简单的ActiveX控件,只有一个方法 int Test()  返回一个整数值,用MFC创建个对话框作为Container,加入这个ActiveX控件,然后可以调用方法Test() 但是在COM里面如何调用,COM里面能创建对话框吗,COM能做Container吗
      

  3.   

    ATL composed control
    可以实现你得要求,可以把你得ACTIVEX控件拉上去
    形成复合控件
      

  4.   

    而且体积小,就是开发麻烦一点,直接用SDK写
      

  5.   

    to  loverx能不能说的详细一点
      

  6.   

    向导--ATL---ATL项目然后添加类---ATL控件---向导对话框--选择复合控件结果是:
    会出现一个类似对话框的“航母”
    右键插入ACTIVEX控件,把你的飞机停上去
    至于细节怎么写,那是另外一个话题~~~
      

  7.   

    sdk都可以别说atl了,方法很简单,atl工程里加个对话框资源,把activex拖进去,生成一个无窗口的无模式对话框:
    AtlAxCreateDialog(_Module.GetModuleInstance(), MAKEINTRESOURCE(你对话框的资源ID), NULL, Dlg_Proc, 0);
    取得activex子窗口:
    CAxWindow wndActivex = GetDlgItem(对话框窗口句柄, activex的资源ID);
    取得接口指针:
    hr = wndActivex.QueryControl(__uuidof(接口IID), (void**)&pActivex);
    好啦,用pActivex指针调用函数就可以了。
      

  8.   

    to XXandOOAtlAxCreateDialog(_Module.GetModuleInstance(), MAKEINTRESOURCE(你对话框的资源ID), NULL, Dlg_Proc, 0)              ///////////////Dlg_Proc怎么定义 
    hr = wndActivex.QueryControl(__uuidof(接口IID), (void**)&pActivex); /////接口IID是谁的接口ID
      

  9.   

    to 巧克力饼
    Dlg_Proc就是dialog的窗口处理过程,就和普通的windows窗口过程是一样的。
    接口IID当然是activex里你要调用的函数的接口的IID,这里我写错了一点,__uuidof就是把接口名字转成IID用的,应该是__uuidof(接口名字)