CDC::EnumObjects
Wylicza piór i pędzle dostępne w kontekście urządzenia.
int EnumObjects(
int nObjectType,
int ( CALLBACK * lpfn )( LPVOID, LPARAM ),
LPARAM lpData
);
Parametry
nObjectType
Określa typ obiektu.Może mieć wartości OBJ_BRUSH lub OBJ_PEN.lpfn
Jest adres procedury instancji funkcji zwrotnej dostarczonych przez aplikację.W sekcji "Uwagi" poniżej.lpData
Punkty danych dostarczonych przez aplikację.Dane są przekazywane do funkcji wywołania zwrotnego z informacji o obiekcie.
Wartość zwracana
Określa ostatni wartość zwracana przez funkcji wywołania zwrotnego.Ich znaczenie jest zdefiniowane przez użytkownika.
Uwagi
Dla każdego obiektu danego typu funkcji zwrotnej, przekazywany jest wywoływana z informacji dla tego obiektu.System wywołuje funkcję zwrotną, dopóki nie ma więcej obiektów lub funkcja wywołania zwrotnego zwraca 0.
Należy zauważyć, że nowe funkcje Microsoft Visual C++ umożliwiają stosowanie zwykłych funkcji jako funkcja przekazany do EnumObjects.Przekazany adres EnumObjects jest wskaźnik do funkcji wyeksportowanej z wywóz oraz z konwencji wywoływania języka Pascal.W aplikacji w trybie ochrony, nie trzeba tworzyć tej funkcji w systemie Windows MakeProcInstance funkcji lub wolne po użyciu funkcji FreeProcInstance funkcji systemu Windows.
Również nie trzeba eksportować nazwy funkcji w wywóz instrukcji w pliku definicji modułów aplikacji.Zamiast tego można użyć wywóz funkcjonować, modyfikator jako
int wywóz wywołania zwrotnego AFunction**(**)LPSTR, LPSTR);
Aby spowodować kompilatora emitują rekord wywóz właściwej dla wywozu przez nazwę bez wygładzania.Działa to większość potrzeb.Dla niektórych przypadków specjalnych, takich jak Eksportowanie funkcji porządkową lub wygładzanie wywozu, nadal należy użyć wywóz instrukcji w pliku definicji modułów.
Do kompilowania programów Microsoft Foundation, zwykle będzie używać /GA i opcje kompilatora /GEs.Opcja kompilatora /Gw nie jest używana z Microsoft Foundation classes.(Użycia funkcji Windows MakeProcInstance, należy jawnie oddanych wskaźnik do funkcji zwrócony z FARPROC do typu potrzebnego w tym API.) Wywołania zwrotnego rejestracji interfejsy są teraz typ palety (należy przekazać w wskaźnik funkcji, który wskazuje właściwy rodzaj funkcję dla określonego wywołania zwrotnego).
Należy również zauważyć, że wszystkie funkcje wywołania zwrotnego musi zalewki wyjątki Microsoft Foundation przed powrotem do systemu Windows, ponieważ wyjątki nie zgłoszony przez granice wywołania zwrotnego.Aby uzyskać więcej informacji dotyczących wyjątków, zobacz artykuł Wyjątki.
Przykład
// 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));
}
}
Wymagania
Nagłówek: afxwin.h