Objektmodelldienste zur Laufzeit

Die Klassen CObject und CRuntimeClass Kapseln mehrerer Objektdienste, einschließlich des Zugriffs auf Laufzeitklasseninformationen, Serialisierung und dynamische Objekterstellung. Alle von dieser Funktionalität abgeleiteten CObject Klassen erben.

Der Zugriff auf Laufzeitklasseninformationen ermöglicht es Ihnen, Informationen zur Laufzeit der Klasse eines Objekts zu ermitteln. Die Möglichkeit, die Klasse eines Objekts zur Laufzeit zu ermitteln, ist nützlich, wenn Sie eine zusätzliche Typüberprüfung von Funktionsargumenten benötigen und wenn Sie speziellen Code basierend auf der Klasse eines Objekts schreiben müssen. Laufzeitklasseninformationen werden nicht direkt von der C++-Sprache unterstützt.

Serialisierung ist der Prozess des Schreibens oder Lesens des Inhalts eines Objekts in oder aus einer Datei. Sie können die Serialisierung verwenden, um den Inhalt eines Objekts zu speichern, auch nachdem die Anwendung beendet wurde. Das Objekt kann dann aus der Datei gelesen werden, wenn die Anwendung neu gestartet wird. Solche Datenobjekte werden als "persistent" bezeichnet.

Mit der erstellung dynamischer Objekte können Sie zur Laufzeit ein Objekt einer angegebenen Klasse erstellen. Beispielsweise müssen Dokument-, Ansichts- und Frameobjekte die dynamische Erstellung unterstützen, da das Framework sie dynamisch erstellen muss.

In der folgenden Tabelle sind die MFC-Makros aufgeführt, die Laufzeitklasseninformationen, Serialisierung und dynamische Erstellung unterstützen.

Weitere Informationen zu diesen Laufzeitobjektdiensten und zur Serialisierung finden Sie im Artikel CObject Klasse: Zugreifen auf Laufzeitklasseninformationen.

Laufzeitobjektmodelldienste-Makros

Name Beschreibung
DECLARE_DYNAMIC Ermöglicht den Zugriff auf Laufzeitklasseninformationen (muss in der Klassendeklaration verwendet werden).
DECLARE_DYNCREATE Ermöglicht die dynamische Erstellung und den Zugriff auf Laufzeitklasseninformationen (muss in der Klassendeklaration verwendet werden).
DECLARE_SERIAL Ermöglicht die Serialisierung und den Zugriff auf Laufzeitklasseninformationen (muss in der Klassendeklaration verwendet werden).
IMPLEMENT_DYNAMIC Ermöglicht den Zugriff auf Laufzeitklasseninformationen (muss in der Klassenimplementierung verwendet werden).
IMPLEMENT_DYNCREATE Ermöglicht die dynamische Erstellung und den Zugriff auf Laufzeitinformationen (muss in der Klassenimplementierung verwendet werden).
IMPLEMENT_SERIAL Ermöglicht serialisierung und Zugriff auf Laufzeitklasseninformationen (muss in der Klassenimplementierung verwendet werden).
RUNTIME_CLASS Gibt die CRuntimeClass Struktur zurück, die der benannten Klasse entspricht.

OLE erfordert häufig die dynamische Erstellung von Objekten zur Laufzeit. Beispielsweise muss eine OLE-Serveranwendung in der Lage sein, OLE-Elemente dynamisch als Reaktion auf eine Anforderung von einem Client zu erstellen. Ebenso muss ein Automatisierungsserver in der Lage sein, Elemente als Reaktion auf Anforderungen von Automatisierungsclients zu erstellen.

Die Microsoft Foundation-Klassenbibliothek bietet zwei für OLE spezifische Makros.

Dynamische Erstellung von OLE-Objekten

Name Beschreibung
AFX_COMCTL32_IF_EXISTS Bestimmt, ob die Bibliothek für allgemeine Steuerelemente die angegebene API implementiert.
AFX_COMCTL32_IF_EXISTS2 Bestimmt, ob die Bibliothek für allgemeine Steuerelemente die angegebene API implementiert.
DECLARE_OLECREATE Ermöglicht das Erstellen von Objekten über die OLE-Automatisierung.
DECLARE_OLECTLTYPE Deklariert die GetUserTypeNameID Funktionen und GetMiscStatus Memberfunktionen Ihrer Steuerelementklasse.
DECLARE_PROPPAGEIDS Deklariert, dass das OLE-Steuerelement eine Liste von Eigenschaftenseiten zum Anzeigen seiner Eigenschaften bereitstellt.
IMPLEMENT_OLECREATE Ermöglicht das Erstellen von Objekten durch das OLE-System.
IMPLEMENT_OLECTLTYPE Implementiert die GetUserTypeNameID Funktionen und GetMiscStatus Memberfunktionen Ihrer Steuerelementklasse.
IMPLEMENT_OLECREATE_FLAGS Entweder dieses Makro oder IMPLEMENT_OLECREATE muss in der Implementierungsdatei für jede Klasse angezeigt werden, die verwendet wird DECLARE_OLECREATE.

AFX_COMCTL32_IF_EXISTS

Bestimmt, ob die Bibliothek für allgemeine Steuerelemente die angegebene API implementiert.

Syntax

AFX_COMCTL32_IF_EXISTS(  proc );

Parameter

proc
Zeigen Sie auf eine mit Null beendete Zeichenfolge, die den Funktionsnamen enthält, oder gibt den Ordnungswert der Funktion an. Wenn dieser Parameter ein Ordnungswert ist, muss er sich im Wort mit niedriger Reihenfolge befindet. Das Wort "Hochreihenfolge" muss null sein. Dieser Parameter muss in Unicode enthalten sein.

Hinweise

Verwenden Sie dieses Makro, um zu bestimmen, ob die von der Funktion angegebene Funktion (anstelle des AufrufensGetProcAddress) von der Allgemeinen Steuerelementbibliothek bestimmt proc wird.

Anforderungen

afxcomctl32.h, afxcomctl32.inl

AFX_COMCTL32_IF_EXISTS2

Bestimmt, ob die Bibliothek für allgemeine Steuerelemente die angegebene API implementiert (dies ist die Unicode-Version von AFX_COMCTL32_IF_EXISTS).

Syntax

AFX_COMCTL32_IF_EXISTS2( proc );

Parameter

proc
Zeigen Sie auf eine mit Null beendete Zeichenfolge, die den Funktionsnamen enthält, oder gibt den Ordnungswert der Funktion an. Wenn dieser Parameter ein Ordnungswert ist, muss er sich im Wort mit niedriger Reihenfolge befindet. Das Wort "Hochreihenfolge" muss null sein. Dieser Parameter muss in Unicode enthalten sein.

Hinweise

Verwenden Sie dieses Makro, um zu bestimmen, ob die von der Funktion angegebene Funktion (anstelle des AufrufensGetProcAddress) von der Allgemeinen Steuerelementbibliothek bestimmt proc wird. Dieses Makro ist die Unicode-Version von AFX_COMCTL32_IF_EXISTS.

Anforderungen

afxcomctl32.h, afxcomctl32.inl

DECLARE_DYNAMIC

Fügt die Möglichkeit hinzu, beim Ableiten einer Klasse von einer Klasse auf Laufzeitinformationen zu einer Objektklasse CObjectzuzugreifen.

DECLARE_DYNAMIC(class_name)

Parameter

class_name
Der tatsächliche Name der Klasse.

Hinweise

Fügen Sie das DECLARE_DYNAMIC Makro dem Headermodul (.h) für die Klasse hinzu, und fügen Sie dieses Modul in alle .cpp Module ein, die Zugriff auf Objekte dieser Klasse benötigen.

Wenn Sie die DECLARE_DYNAMIC makros IMPLEMENT_DYNAMIC wie beschrieben verwenden, können Sie das Makro und die CObject::IsKindOf Funktion verwendenRUNTIME_CLASS, um die Klasse Ihrer Objekte zur Laufzeit zu bestimmen.

Wenn DECLARE_DYNAMIC sie in der Klassendeklaration enthalten ist, IMPLEMENT_DYNAMIC muss sie in die Klassenimplementierung einbezogen werden.

Weitere Informationen zum DECLARE_DYNAMIC Makro finden Sie unter CObject "Kursthemen".

Beispiel

Ein Beispiel hierfür finden Sie unter IMPLEMENT_DYNAMIC.

Anforderungen

Header: afx.h

DECLARE_DYNCREATE

Ermöglicht die dynamische Erstellung von Objekten von CObjectabgeleiteten Klassen zur Laufzeit.

DECLARE_DYNCREATE(class_name)

Parameter

class_name
Der tatsächliche Name der Klasse.

Hinweise

Das Framework verwendet diese Möglichkeit, neue Objekte dynamisch zu erstellen. Beispielsweise die neue Ansicht, die beim Öffnen eines neuen Dokuments erstellt wurde. Dokument-, Ansichts- und Frameklassen sollten die dynamische Erstellung unterstützen, da das Framework sie dynamisch erstellen muss.

Fügen Sie das DECLARE_DYNCREATE .h Makro im Modul für die Klasse hinzu, und fügen Sie dieses Modul in alle .cpp Module ein, die Zugriff auf Objekte dieser Klasse benötigen.

Wenn DECLARE_DYNCREATE sie in der Klassendeklaration enthalten ist, IMPLEMENT_DYNCREATE muss sie in die Klassenimplementierung einbezogen werden.

Weitere Informationen zum DECLARE_DYNCREATE Makro finden Sie unter CObject "Kursthemen".

Hinweis

Das DECLARE_DYNCREATE Makro enthält alle Funktionen von DECLARE_DYNAMIC.

Beispiel

Ein Beispiel hierfür finden Sie unter IMPLEMENT_DYNCREATE.

Anforderungen

Header: afx.h

DECLARE_OLECTLTYPE

Deklariert die GetUserTypeNameID Funktionen und GetMiscStatus Memberfunktionen Ihrer Steuerelementklasse.

Syntax

DECLARE_OLECTLTYPE( class_name )

Parameter

class_name
Der Name der Steuerelementklasse.

Hinweise

GetUserTypeNameID und GetMiscStatus sind reine virtuelle Funktionen, die in COleControldeklariert sind. Da diese Funktionen rein virtuell sind, müssen sie in Ihrer Steuerelementklasse überschrieben werden. Zusätzlich dazu DECLARE_OLECTLTYPEmüssen Sie das IMPLEMENT_OLECTLTYPE Makro ihrer Steuerelementklassendeklaration hinzufügen.

Anforderungen

Header: afxctl.h

DECLARE_PROPPAGEIDS

Deklariert, dass das OLE-Steuerelement eine Liste von Eigenschaftenseiten zum Anzeigen seiner Eigenschaften bereitstellt.

Syntax

DECLARE_PROPPAGEIDS( class_name )

Parameter

class_name
Der Name der Steuerelementklasse, die die Eigenschaftenseiten besitzt.

Hinweise

Verwenden Sie das DECLARE_PROPPAGEIDS Makro am Ende der Klassendeklaration. Verwenden Sie dann in der Datei, in der .cpp die Memberfunktionen für die Klasse definiert sind, das BEGIN_PROPPAGEIDS Makro, Makroeinträge für die Eigenschaftenseiten des Steuerelements und das END_PROPPAGEIDS Makro, um das Ende der Eigenschaftenseitenliste zu deklarieren.

Weitere Informationen zu Eigenschaftenseiten finden Sie im Artikel ActiveX-Steuerelemente: Eigenschaftenseiten.

Anforderungen

Header: afxctl.h

DECLARE_SERIAL

Generiert den C++-Headercode, der für eine CObjectabgeleitete Klasse erforderlich ist, die serialisiert werden kann.

DECLARE_SERIAL(class_name)

Parameter

class_name
Der tatsächliche Name der Klasse.

Hinweise

Serialisierung ist der Prozess des Schreibens oder Lesens des Inhalts eines Objekts in und aus einer Datei.

Verwenden Sie das DECLARE_SERIAL Makro in einem .h Modul, und fügen Sie dieses Modul dann in alle .cpp Module ein, die Zugriff auf Objekte dieser Klasse benötigen.

Wenn DECLARE_SERIAL sie in der Klassendeklaration enthalten ist, IMPLEMENT_SERIAL muss sie in die Klassenimplementierung einbezogen werden.

Das DECLARE_SERIAL Makro enthält alle Funktionen von DECLARE_DYNAMIC und DECLARE_DYNCREATE.

Sie können das AFX_API Makro verwenden, um den CArchive Extraktionsoperator automatisch für Klassen zu exportieren, die die DECLARE_SERIAL Makros IMPLEMENT_SERIAL verwenden. Klammern Sie die Klassendeklarationen (in der .h Datei) mit dem folgenden Code:

#undef AFX_API
#define AFX_API AFX_EXT_CLASS

// <your class declarations here>

#undef AFX_API
#define AFX_API

Weitere Informationen zum DECLARE_SERIAL Makro finden Sie unter CObject "Kursthemen".

Beispiel

class CAge : public CObject
{
public:
   void Serialize(CArchive& ar);
   DECLARE_SERIAL(CAge)

   // remainder of class declaration omitted

Anforderungen

Header: afx.h

IMPLEMENT_DYNAMIC

Generiert den C++-Code, der für eine dynamische CObjectabgeleitete Klasse mit Laufzeitzugriff auf den Klassennamen und die Position innerhalb der Hierarchie erforderlich ist.

IMPLEMENT_DYNAMIC(class_name, base_class_name)

Parameter

class_name
Der tatsächliche Name der Klasse.

base_class_name
Der Name der Basisklasse.

Hinweise

Verwenden Sie das IMPLEMENT_DYNAMIC Makro in einem .cpp Modul, und verknüpfen Sie dann den resultierenden Objektcode nur einmal.

Weitere Informationen finden Sie unter CObject "Kursthemen".

Beispiel

class CPerson : public CObject
{
   DECLARE_DYNAMIC(CPerson)

   // other declarations
};

 

IMPLEMENT_DYNAMIC(CPerson, CObject)

Anforderungen

Header: afx.h

IMPLEMENT_DYNCREATE

Ermöglicht die dynamische Erstellung von Objekten von CObjectabgeleiteten Klassen zur Laufzeit, wenn sie mit dem DECLARE_DYNCREATE Makro verwendet wird.

IMPLEMENT_DYNCREATE(class_name, base_class_name)

Parameter

class_name
Der tatsächliche Name der Klasse.

base_class_name
Der tatsächliche Name der Basisklasse.

Hinweise

Das Framework verwendet diese Möglichkeit, um neue Objekte dynamisch zu erstellen, z. B. wenn ein Objekt während der Serialisierung vom Datenträger gelesen wird. Fügen Sie das IMPLEMENT_DYNCREATE Makro in der Klassenimplementierungsdatei hinzu. Weitere Informationen finden Sie unter CObject "Kursthemen".

Wenn Sie die DECLARE_DYNCREATE IMPLEMENT_DYNCREATE Makros und Makros verwenden, können Sie das Makro und die CObject::IsKindOf Memberfunktion verwendenRUNTIME_CLASS, um die Klasse Ihrer Objekte zur Laufzeit zu bestimmen.

Wenn DECLARE_DYNCREATE sie in der Klassendeklaration enthalten ist, IMPLEMENT_DYNCREATE muss sie in die Klassenimplementierung einbezogen werden.

Beachten Sie, dass diese Makrodefinition den Standardkonstruktor für Ihre Klasse aufruft. Wenn ein nicht trivialer Konstruktor explizit von der Klasse implementiert wird, muss er auch explizit den Standardkonstruktor implementieren. Der Standardkonstruktor kann den Abschnitten der Klasse private oder protected Member hinzugefügt werden, um zu verhindern, dass er außerhalb der Klassenimplementierung aufgerufen wird.

Beispiel

class CMyDynCreateObj : public CObject
{
   int m_Num;
public:
   DECLARE_DYNCREATE(CMyDynCreateObj)
   CMyDynCreateObj(int Num) { m_Num = Num; }
private:
   CMyDynCreateObj() { m_Num = 0; }  // provide default constructor only for 
                                     // dynamic creation 
};

 

IMPLEMENT_DYNCREATE(CMyDynCreateObj, CObject)

Anforderungen

Header: afx.h

IMPLEMENT_OLECREATE_FLAGS

Entweder dieses Makro oder IMPLEMENT_OLECREATE muss in der Implementierungsdatei für jede Klasse angezeigt werden, die verwendet wird DECLARE_OLECREATE.

Syntax

IMPLEMENT_OLECREATE_FLAGS( class_name, external_name, nFlags,
    l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8)

Parameter

class_name
Der tatsächliche Name der Klasse.

external_name
Der Objektname, der für andere Anwendungen verfügbar gemacht wird (in Anführungszeichen eingeschlossen).

nFlags
Enthält ein oder mehrere der folgenden Flags:

  • afxRegInsertable Ermöglicht das Anzeigen des Steuerelements im Dialogfeld "Objekt einfügen" für OLE-Objekte.
  • afxRegApartmentThreading Legt das Threadingmodell in der Registrierung auf ThreadingModel=Apartment.
  • afxRegFreeThreading Legt das Threadingmodell in der Registrierung auf ThreadingModel=Free.

Sie können die beiden Flags afxRegApartmentThreading kombinieren und afxRegFreeThreading ThreadingModel=Both festlegen. Weitere Informationen zur Threadingmodellregistrierung finden Sie InprocServer32 im Windows SDK.

l, w1, , w2, b2b1, b3b4, , b5, b6, , b7Komponenten b8 der CLSID der Klasse.

Hinweise

Hinweis

Wenn Sie verwenden IMPLEMENT_OLECREATE_FLAGS, können Sie angeben, welches Threadingmodell Ihr Objekt unterstützt, indem Sie den nFlags Parameter verwenden. Wenn Sie nur das Einzellaufmodell unterstützen möchten, verwenden Sie IMPLEMENT_OLECREATE.

Der externe Name ist der Bezeichner, der für andere Anwendungen verfügbar gemacht wird. Clientanwendungen verwenden den externen Namen, um ein Objekt dieser Klasse von einem Automatisierungsserver anzufordern.

Die OLE-Klassen-ID ist ein eindeutiger 128-Bit-Bezeichner für das Objekt. Es besteht aus einem , zwei long**WORD**s und acht **BYTE**s, wie dargestellt durch l, w1, , w2und b1 durch b8 die Syntaxbeschreibung. Der Anwendungs-Assistent und Code-Assistenten erstellen eindeutige OLE-Klassen-IDs für Sie nach Bedarf.

Anforderungen

Header: afxdisp.h

IMPLEMENT_OLECTLTYPE

Implementiert die GetUserTypeNameID Funktionen und GetMiscStatus Memberfunktionen Ihrer Steuerelementklasse.

Syntax

DECLARE_OLECTLTYPE( class_name, idsUserTypeName, dwOleMisc )

Parameter

class_name
Der Name der Steuerelementklasse.

idsUserTypeName
Die Ressourcen-ID einer Zeichenfolge, die den externen Namen des Steuerelements enthält.

dwOleMisc
Eine Aufzählung, die mindestens ein Flag enthält. Weitere Informationen zu dieser Enumeration finden Sie im OLEMISC Windows SDK.

Hinweise

Zusätzlich dazu IMPLEMENT_OLECTLTYPEmüssen Sie das DECLARE_OLECTLTYPE Makro ihrer Steuerelementklassendeklaration hinzufügen.

Die GetUserTypeNameID Memberfunktion gibt die Ressourcenzeichenfolge zurück, die Die Steuerelementklasse identifiziert. GetMiscStatus gibt die OLEMISC Bits für Ihr Steuerelement zurück. Diese Enumeration gibt eine Auflistung von Einstellungen an, die verschiedene Merkmale Ihres Steuerelements beschreiben. Eine vollständige Beschreibung der OLEMISC Einstellungen finden Sie im OLEMISC Windows SDK.

Hinweis

Die von ActiveX ControlWizard verwendeten Standardeinstellungen sind: OLEMISC_ACTIVATEWHENVISIBLE, , OLEMISC_SETCLIENTSITEFIRST, , OLEMISC_INSIDEOUT, OLEMISC_CANTLINKINSIDEund OLEMISC_RECOMPOSEONRESIZE.

Anforderungen

Header: afxctl.h

IMPLEMENT_SERIAL

Generiert den C++-Code, der für eine dynamische CObjectabgeleitete Klasse mit Laufzeitzugriff auf den Klassennamen und die Position innerhalb der Hierarchie erforderlich ist.

IMPLEMENT_SERIAL(class_name, base_class_name, wSchema)

Parameter

class_name
Der tatsächliche Name der Klasse.

base_class_name
Der Name der Basisklasse.

wSchema
Eine UINT -Versionsnummer, die im Archiv codiert wird, um ein Deserialisierungsprogramm zum Identifizieren und Verarbeiten von Daten zu ermöglichen, die von früheren Programmversionen erstellt wurden. Die Klassenschemanummer darf nicht -1 sein.

Hinweise

Verwenden Sie das IMPLEMENT_SERIAL Makro in einem .cpp Modul. Verknüpfen Sie dann den resultierenden Objektcode nur einmal.

Sie können das AFX_API Makro verwenden, um den CArchive Extraktionsoperator automatisch für Klassen zu exportieren, die die DECLARE_SERIAL Makros IMPLEMENT_SERIAL verwenden. Klammern Sie die Klassendeklarationen (in der .h Datei) mit dem folgenden Code:

#undef AFX_API
#define AFX_API AFX_EXT_CLASS

// <your class declarations here>

#undef AFX_API
#define AFX_API

Weitere Informationen finden Sie in den CObject Kursthemen.

Beispiel

IMPLEMENT_SERIAL(CAge, CObject, VERSIONABLE_SCHEMA | 2)

Anforderungen

Header: afx.h

RUNTIME_CLASS

Ruft die Laufzeitklassenstruktur aus dem Namen einer C++-Klasse ab.

RUNTIME_CLASS(class_name)

Parameter

class_name
Der tatsächliche Name der Klasse (nicht in Anführungszeichen eingeschlossen).

Hinweise

RUNTIME_CLASS gibt einen Zeiger auf eine CRuntimeClass Struktur für die durch class_name. Nur CObjectabgeleitete Klassen, die mit DECLARE_DYNAMIC, DECLARE_DYNCREATEoder DECLARE_SERIAL gibt Zeiger auf eine CRuntimeClass Struktur zurück.

Weitere Informationen finden Sie unter CObject "Kursthemen".

Beispiel

CRuntimeClass* prt = RUNTIME_CLASS(CAge);
ASSERT(strcmp(prt->m_lpszClassName, "CAge") == 0);

Anforderungen

Header: afx.h

DECLARE_OLECREATE

Ermöglicht das Erstellen von Objekten von CCmdTargetabgeleiteten Klassen über die OLE-Automatisierung.

DECLARE_OLECREATE(class_name)

Parameter

class_name
Der tatsächliche Name der Klasse.

Hinweise

Mit diesem Makro können andere OLE-fähige Anwendungen Objekte dieses Typs erstellen.

Fügen Sie das DECLARE_OLECREATE .h Makro im Modul für die Klasse hinzu, und fügen Sie dieses Modul dann in alle .cpp Module ein, die Zugriff auf Objekte dieser Klasse benötigen.

Wenn DECLARE_OLECREATE sie in der Klassendeklaration enthalten ist, IMPLEMENT_OLECREATE muss sie in die Klassenimplementierung einbezogen werden. Eine Klassendeklaration, die DECLARE_OLECREATE verwendet wird, muss ebenfalls verwendet DECLARE_DYNCREATE oder verwendet werden DECLARE_SERIAL.

Anforderungen

Header: afxdisp.h

IMPLEMENT_OLECREATE

Entweder dieses Makro oder IMPLEMENT_OLECREATE_FLAGS muss in der Implementierungsdatei für jede Klasse angezeigt werden, die verwendet wird DECLARE_OLECREATE.

IMPLEMENT_OLECREATE(class_name, external_name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8)

Parameter

class_name
Der tatsächliche Name der Klasse.

external_name
Der Objektname, der für andere Anwendungen verfügbar gemacht wird (in Anführungszeichen eingeschlossen).

l, w1, , w2, b2b1, b3b4, , b5, b6, , b7Komponenten b8 der CLSID der Klasse.

Hinweise

Hinweis

Wenn Sie standardmäßig nur das Einzelthreadingmodell verwenden IMPLEMENT_OLECREATE, unterstützen Sie es. Wenn Sie verwenden IMPLEMENT_OLECREATE_FLAGS, können Sie angeben, welches Threadingmodell Ihr Objekt unterstützt, indem Sie den nFlags Parameter verwenden.

Der externe Name ist der Bezeichner, der für andere Anwendungen verfügbar gemacht wird. Clientanwendungen verwenden den externen Namen, um ein Objekt dieser Klasse von einem Automatisierungsserver anzufordern.

Die OLE-Klassen-ID ist ein eindeutiger 128-Bit-Bezeichner für das Objekt. Es besteht aus einem , zwei long**WORD**s und acht **BYTE**s, wie dargestellt durch l, w1, , w2und b1 durch b8 die Syntaxbeschreibung. Der Anwendungs-Assistent und Code-Assistenten erstellen eindeutige OLE-Klassen-IDs für Sie nach Bedarf.

Anforderungen

Header: afxdisp.h

Siehe auch

Makros und Globalen
Isolierung der MFC-Bibliothek für Standardsteuerelemente
CLSID-Schlüssel