activex  vc编程问题急问  
 
 
我有两个activex控件:a.dll,b.dll,其中包含操作这个控件的接口:Ia和Ib  
其中b有一个函数:DoSth(IDispatch  *  para),而para必须是Ia类型接口  
 
在vb中,窗体加两个控件aa和bb,然后由于vb的直接类型转换,  
很容易实现:bb.DoSth(aa)  
 
而在vc中,窗体加两个控件aa和bb,  
然后必须用classwizard生成封装Ia和Ib的类:Ca和Cb(皆从Cwnd派生)  
同时分别有两个变量:m_a,m_b,这时想实现vb中一样的效果而m_b.DoSth(m_a)显示是不可以调用的  
我的做法是:  
LPDISPATCH  pA;  
m_a.EnableAutomation();  
pA  =  m_a.GetIDispatch(TRUE);  
在debug时总可以看到pA是有效的指针,  
但用m_b.DoSth(pA)的时候,总是报参数错误,而尝试用pA去调用Ia本身的函数也皆失败  
请问我获取aa的接口的方法是不是错了?应该用什么方法呢?  
 
请各位大虾不吝赐教,谢谢!!!  

解决方案 »

  1.   

    // IDC_MSACALCTRL1 is the ID of the Calendar control OCX embedded 
       // on this dialog
       CWnd *pWndCal = GetDlgItem(IDC_MSACALCTRL1);   // Use the IUnknown of the control
       LPUNKNOWN pUnk = pWndCal->GetControlUnknown();   // From there get the IDispatch interface of control
       LPDISPATCH pDisp = NULL;
       pUnk->QueryInterface(IID_IDispatch, (LPVOID*)&pDisp);用这个方法把A的IDispatch得到,然后传给B
      

  2.   

    Sorry for late response, I am busy to death today!