Ako vytvoriť rozhranie umývadlo v MFC-založené COM klientaPozná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. 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(). Tu sú kroky na pridanie drez rozhrania COM klientovi: - 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. - 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č.
- 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ť. - 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);
- 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. 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: 152087
(http://support.microsoft.com/kb/152087/
)
Connpts.exe vzorka preukáže ako vykonávať spojovacie body a bod pripojenia Drezy v Visual c ++ 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
| 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
(http://support.microsoft.com/kb/181845/en-us/
)
| |