Ako vytvoriť rozhranie umývadlo v MFC-založené COM klienta

ID článku: 181845 - Zobraziť produkty, ktorých sa tento článok týka.
Rozbaliť všetko | Zbaliť všetko
Poznámka: Microsoft Visual C++.NET 2002 a Microsoft Visual C++.NET 2003 podporujú obidve spravovaný kód vzoru, ktorý je poskytované spoločnosťou Microsoft.NET Framework a nespravovaná natívny modelu kód systému Microsoft Windows. Informácie v tomto článku vzťahuje iba na nespravovaná Visual c ++ kód.

SUHRN

Microsoft nadácie tried (MFC) má Sprievodca podpora pridať drez rozhrania pre ovládacie prvky ActiveX. Avšak, táto podpora nevzťahuje na iné servery COM. Tento článok popisuje, ako pridať rozhranie umývadlo v MFC klient pre zdroj rozhrania popísané COM servery. Upozorňujeme, že Tento článok sa uplatňuje na zdroj rozhrania, ktoré sú dispinterfaces alebo dual rozhrania s udalosťami, ktoré sa nazýva prostredníctvom IDispatch::Invoke().

DALSIE INFORMACIE

Tu sú kroky na pridanie drez rozhrania COM klientovi:
  1. Pomocou Sprievodcu triedy pridajte odvodený objekt CCmdTarget (napríklad, CMySink) s podporou automatizácie. V Sprievodcovi triedy vyberte Automatizácia možnosť skôr ako "Createable identifikáciou typu" možnosť pri pridávaní to trieda.

    Poznámka: Ak používate program Visual Studio.ČISTÁ, vykonajte nasledovné:

    Na Project menu vyberte Pridať triedy. V Pridať triedy dialógové okno, vyberte MFC triedy. V MFC triedy Sprievodca, na Názvy stránke pod základná trieda, vyberte CCmdTarget, a potom podľa vyberte podpora automatizácie, vyberte Automatizácia.
  2. V mape rozhranie zmeniť IID (druhý parameter v INTERFACE_PART makro) aby IID rozhrania zdroja (zvyčajne rozhranie s atribútom predvolené a/alebo zdroja v .idl súbore servera). .Idl súboru možno vidieť zobrazením knižnicu typelib v objekt OLE/COM Zobrazovač.
  3. V DISPATCH_MAP z CMySink trieda, pridajte DISP_FUNCTION_ID makro pre každú udalostí definované v zdroji rozhraním, ktoré chcete spracovať. Napríklad:
       BEGIN_DISPATCH_MAP(CMySink, CCmdTarget)
         DISP_FUNCTION_ID(CMySink,"Quit",2,OnObjQuit,VT_EMPTY,VTS_I4 VTS_I4)
       END_DISPATCH_MAP()
    						
    Vyššie uvedený kód je položka pre manipuláciu Quit udalosť s DISPID 2, ktorý trvá dva dlhé parametre a vráti neplatné. OnObjectQuit je CMySink člen funkcia, ktorá trvá dva longs a vráti neplatné. Toto funkcia musí byť pridané ručne a je nazývaný keď COM servera požiare Quit udalosť.
  4. Teraz drez rozhranie mať hákovitý so serverom Takže môžete spustiť prijímajúcej udalosti. Vykonáte to volanie AfxConnectionAdvise() Funkcia po vytvorení objektu server. Napríklad:
       //Instantiate the sink class and hold a pointer to it.
       m_pSink = new CMySink();
    
       //Get a pointer to sinks IUnknown, no AddRef. CMySink implements only
       //dispinterface and the IUnknown and IDispatch pointers will be same.
       LPUNKNOWN pUnkSink = m_pSink->GetIDispatch(FALSE);
    
       //Establish a connection between source and sink.
       //m_pUnkSrc is IUnknown of server obtained by CoCreateInstance().
       //m_dwCookie is a cookie identifying the connection, and is needed
       //to terminate the connection.
       AfxConnectionAdvise(m_pUnkSrc, IID_MYEVENT, pUnkSink, FALSE,
          &m_dwCookie);
    						
  5. Ak ste skončili, pomocou objektu server, ktorý potrebujete pre ukončenie pripojenia pred uvoľnením objektu server. Urobíte volanie AfxConnectionUnadvise() Funkcia. Napríklad:
       //Get a pointer to sinks IUnknown, no AddRef.
       LPUNKNOWN pUnkSink = m_pSink->GetIDispatch(FALSE);
    
       //Terminate a connection between source and sink.
       //m_pUnkSrc is IUnknown of server obtained by CoCreateInstance().
       //m_dwCookie is a value obtained through AfxConnectionAdvise().
       AfxConnectionUnadvise(m_pUnkSrc, IID_MYEVENT, pUnkSink, FALSE,
       m_dwCookie);
    						
Pretože CMySink bol vytvorený na Nalož, uistite sa, že odstránite aby ste sa vyhli pamäte netesnosti.

ODKAZY

Umývadlo zložka Connpts.exe vzorky ilustruje implementáciu drez rozhrania.

Ďalšie informácie získate po kliknutí na nasledujúce číslo článku databázy Microsoft Knowledge Base:
152087Connpts.exe vzorka preukáže ako vykonávať spojovacie body a bod pripojenia Drezy v Visual c ++

Vlastnosti

ID článku: 181845 - Posledná kontrola: 18. októbra 2011 - Revízia: 2.0
Informácie v tomto článku sa týkajú nasledujúcich produktov:
  • Microsoft Foundation Class Library 4.2, pri použití s produktom:
    • Microsoft Visual C++ 2.1
    • Microsoft Visual C++ 2.2
    • Microsoft Visual C++ 4.0 Standard Edition
    • Microsoft Visual C++ 4.2 Enterprise Edition
    • Microsoft Visual C++ 5.0 Enterprise Edition
    • Microsoft Visual C++ 5.0 Professional Edition
    • Microsoft Visual C++ .NET 2002 Standard Edition
  • Microsoft Visual C++ .NET 2003 Standard Edition
Kľúčové slová: 
kbhowto kbmt KB181845 KbMtsk
Strojovo preložené
DÔLEŽITÉ: Tento článok bol preložený pomocou softvéru na strojový preklad od spoločnosti Microsoft, nie prekladateľom. Spoločnosť Microsoft ponúka články preložené prekladateľmi aj strojovo preložené články, vďaka čomu máte možnosť prístupu ku všetkým článkom databázy Knowledge Base vo svojom jazyku. Strojovo preložený článok však nie je vždy perfektný. Môže obsahovať chyby týkajúce sa slovnej zásoby, syntaxe alebo gramatiky, podobne ako cudzinec môže robiť chyby, keď rozpráva vašim jazykom. Spoločnosť Microsoft nenesie zodpovednosť za akékoľvek nepresnosti, chyby alebo škody spôsobené akýmkoľvek nepresným prekladom obsahu alebo jeho použitím zo strany zákazníkov. Spoločnosť Microsoft softvér na strojový preklad pravidelne aktualizuje.
Pokiaľ chcete vidieť anglickú verziu článku, kliknite sem:181845

Odošlite odozvu