:)虽然不大明白你的意思,但你要的功能如果用.Remoting应该可以实现的,当然这不是你要的COM机制了

解决方案 »

  1.   

    在MSDN里的interop及remoting都是基于单一事件的委托事例或是事件的累加(多重委托),
    在C++中实现COM机制更多的是建立事件过滤器来接收COM源事件。以下是C++代码://初始化COM对象及客户端接口
    hr = CoCreateInstance(....,m_pClient);
    hr = pClient->Initialize();...//以下即是问题所在
    //~~~~~~~~~~~~~~~~
    long lEventMask = M_STATE_CHANGE | M_MESSAGING | M_CLIENT;
    hr = m_pClient->put_EventFilter( lEventMask );
    m_pEvents = new CRTCEvents;  //建立事件接收对像,于头文件声明
    hr = m_pEvents->Advise( pClient, hWnd );
    //~~~~~~~~~~~~~~~~~...LRESULT CAVDConfDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
    {
    switch (message)
    {
    case WM_RTC_EVENT:
    OnRTCEvent (message, wParam, lParam);
    break;
    }
    return CDialog::WindowProc(message, wParam, lParam);
    }在上面的实现中,程序通过pClient接口建立一个事件过滤器(以屏蔽码形式),
    并且在应用程序事件接收对象中注册一个ICCEventNotification事件接口。
    在WindowProc接收COM事件类型和对象并在的Event方法进行处理。
    Q:通过TlbImp将COM引用至项目后的C#代码又如何实现??????刚开始整C#,可能我的问题没问明白,还望多指教,