CDC::EnumObjects
Listet die Stifte und Pinsel auf die, die in einem Gerätekontext verfügbar sind.
int EnumObjects(
int nObjectType,
int ( CALLBACK * lpfn )( LPVOID, LPARAM ),
LPARAM lpData
);
Parameter
nObjectType
Gibt den Objekttyp an. Es kann die Werte OBJ_BRUSH oder OBJ_PEN haben.lpfn
Ist die ProzedurInstanz Adresse der von der Anwendung bereitgestellten Rückruffunktion. Siehe den "Hinweis" weiter unten.lpData
Punkte in der von der Anwendung bereitgestellten Daten. Die Daten werden an die Rückruffunktion zusammen mit den Objektinformationen übergeben.
Rückgabewert
Gibt den letzten Wert an, der von Rückruffunktion zurückgegeben wird. Die Bedeutung ist benutzerdefiniert.
Hinweise
Für jedes Objekt eines bestimmten Typs, wird die Rückruffunktion, dass übergeben, die Sie mit den Informationen für dieses Objekt aufgerufen. Das System die Rückruffunktion auf, bis keine weiteren Objekte oder die Rückruffunktionsrückgaben 0 gibt.
Beachten Sie, dass neue Funktionen von Microsoft Visual C++ Sie eine normale Funktion als die Funktion verwenden können, die zu EnumObjects übergeben wurde. Die Adresse, die zu EnumObjects übergeben wird, ist ein Zeiger auf eine Funktion, die mit EXPORT und mit der Pascal-Aufrufkonvention exportiert wird. In GeschützteModus Anwendungen müssen Sie diese Funktion mit der Funktion Windows MakeProcInstance nicht erstellen oder den Funktionsnachgebrauch mit der FreeProcInstance Windows-Funktion freigeben.
Sie müssen auch den Funktionsnamen in einer EXPORTS-Anweisung in der Moduldefinitionsdatei Ihrer Anwendung nicht exportieren. Sie können den EXPORT-Funktionsmodifizierer, als in stattdessen verwenden
int CALLBACK EXPORT AFunction (LPSTR, LPSTR);
zu den Compiler anweisen, den richtigen Exportdatensatz nach Namen ohne Aliasing für den Export auszugeben. Dies funktioniert für die meisten Anforderungen. Für einige Sonderfälle wie Exportieren einer Funktion nach Ordnungszahl oder Aliasing der Export, müssen Sie dennoch eine EXPORTS-Anweisung in einer Moduldefinitionsdatei verwenden.
Für die Kompilierung von Microsoft Foundations-Programmen, wird normalerweise die /GA- und /GEs- Compileroptionen. Die Compileroption /Gw- wird nicht mit den Microsoft Foundations-Klassen verwendet. (Wenn Sie die Windows-Funktion MakeProcInstance verwenden, müssen Sie den zurückgegebenen Funktionszeiger von FARPROC in den Typ explizit umwandeln, der in dieser API erforderlich ist). Rückrufregistrierungsschnittstellen sind jetzt typsicher (Sie müssen in einen Funktionszeiger übergeben, der der Rechtart der Funktion für den bestimmten Rückruf zeigt).
Beachten Sie auch, dass alle Rückruffunktionen Microsoft Foundations-Ausnahmen Felder müssen, bevor sie in Windows zurückgeben, da Ausnahmen nicht über Rückrufgrenzen ausgelöst werden können. Weitere Informationen zu Ausnahmen, finden Sie im Artikel Ausnahmen.
Beispiel
// print some info about a pen we're ready to enumerate
BOOL CALLBACK EnumObjectHandler(LPVOID lpLogObject, LPARAM /* lpData */)
{
LOGPEN* pPen = (LOGPEN*) lpLogObject;
switch (pPen->lopnStyle)
{
case PS_SOLID:
TRACE0("PS_SOLID: ");
break;
case PS_DASH:
TRACE0("PS_DASH: ");
break;
case PS_DOT:
TRACE0("PS_DOT: ");
break;
case PS_DASHDOT:
TRACE0("PS_DASHDOT: ");
break;
case PS_DASHDOTDOT:
TRACE0("PS_DASHDOTDOT: ");
break;
case PS_NULL:
TRACE0("PS_NULL: ");
break;
case PS_INSIDEFRAME:
TRACE0("PS_INSIDEFRAME:");
break;
default:
TRACE0("unk style:");
}
TRACE2("Color: 0x%8.8X, Width: %d\n", pPen->lopnColor, pPen->lopnWidth);
return TRUE;
}
// get the default printer and enumerate the pens it has
void CDCView::OnEnumPens()
{
CPrintDialog dlg(FALSE);
dlg.GetDefaults();
HDC hdc = dlg.GetPrinterDC();
if (hdc != NULL)
{
CDC dc;
dc.Attach(hdc);
VERIFY(dc.EnumObjects(OBJ_PEN, EnumObjectHandler, 0));
}
}
Anforderungen
Header: afxwin.h