vc里面 #import “opcautoda.dll" 一个自动化 (OLE)控件,
struct __declspec(uuid("28e68f9b-8d75-11d1-8dc3-3c302a000000"))
OPCGroup;
    // [ default ] interface IOPCGroup
    // [ default, source ] dispinterface DIOPCGroupEvent
事件定义如下:
DIOPCGroupEvent : IDispatch
{
    //
    // Wrapper methods for error-handling
    //    // Methods:
    HRESULT DataChange (
        long TransactionID,
        long NumItems,
        SAFEARRAY * * ClientHandles,
        SAFEARRAY * * ItemValues,
        SAFEARRAY * * Qualities,
        SAFEARRAY * * TimeStamps );
    HRESULT AsyncReadComplete (
        long TransactionID,
        long NumItems,
        SAFEARRAY * * ClientHandles,
        SAFEARRAY * * ItemValues,
        SAFEARRAY * * Qualities,
        SAFEARRAY * * TimeStamps,
        SAFEARRAY * * Errors );
    HRESULT AsyncWriteComplete (
        long TransactionID,
        long NumItems,
        SAFEARRAY * * ClientHandles,
        SAFEARRAY * * Errors );
    HRESULT AsyncCancelComplete (
        long CancelID );
},
vb里面定义 group 对象时 用了withvent,c# 直接可以看到事件响应函数 on********; 但是在vc里面 却只能看到属性和方法,怎么在vc里面调用写group的事件响应函数

解决方案 »

  1.   

    那肯定都做了,问题是怎么找到事件的接口 DIOPCGroupEvent  *opcEventP;IID ccc=_uuidof(DIOPCGroupEvent);
        opcGroup.QueryStdInterfaces(ccc, (void**)&opcEventP);opcGroup肯定是能用的 , 但是 opcEventP 执行结果是 0呀 ,事件响应肯定不是这么做
      

  2.   

    况且这里 group 和 DIOPCGroupEvent 是一个接口 , 问题是怎么写事件响应
      

  3.   

    1)工程里实现DIOPCGroupEvent接口
    2)通过ATL的AtlAdvise进行绑定MSDN例子:LPUNKNOWN m_pSourceUnk;
    LPUNKNOWN m_pSinkUnk;
    DWORD m_dwCustCookie;// create source object
    HRESULT hr = CoCreateInstance (CLSID_MyComponent, NULL, CLSCTX_ALL, 
             IID_IUnknown, (LPVOID*)&m_pSourceUnk);
    _ASSERT (SUCCEEDED (hr));// Create sink object.  CMySink is a CComObjectRootEx-derived class 
    // that implements the event interface methods.
    CComObject<CMySink> *pSinkClass;
    CComObject<CMySink>::CreateInstance (&pSinkClass);
    hr = pSinkClass->QueryInterface (IID_IUnknown, (LPVOID*)&m_pSinkUnk);
    _ASSERT (SUCCEEDED (hr));hr = AtlAdvise (m_pSourceUnk, m_pSinkUnk, IID__IMyEvent, &m_dwCustCookie);
    _ASSERT (SUCCEEDED (hr)); 
      

  4.   

    1)工程里实现DIOPCGroupEvent接口