CDC::EnumObjects
Enumera penne e pennelli disponibili in un contesto di dispositivo.
int EnumObjects(
int nObjectType,
int ( CALLBACK * lpfn )( LPVOID, LPARAM ),
LPARAM lpData
);
Parametri
nObjectType
Specifica il tipo di oggetto. È possibile assegnare i valori OBJ_BRUSH o OBJ_PEN.lpfn
È l'indirizzo di l routine- istanza della funzione di callback applicazione fornita. Vedere la sezione "note" riportata di seguito.lpData
Punti ai dati esplicitamente forniti. I dati vengono passati alla funzione di callback con le informazioni dell'oggetto.
Valore restituito
Specifica l'ultimo valore restituito da funzione di callback. Il significato è definito.
Note
Per ogni oggetto di un tipo specificato, la funzione di callback che la sessione viene chiamato con le informazioni relative a tale oggetto. Le chiamate di sistema la funzione di callback fino a non sono più oggetti o restituisce 0 alla funzione di callback.
Si noti che le nuove funzionalità di Microsoft Visual C++ consentono di utilizzare una funzione comune della funzione passata a EnumObjects. L'indirizzo passato a EnumObjects è un puntatore a una funzione esportata con EXPORT e con la convenzione di chiamata Pascal. Nelle applicazioni di proteggere- modalità, non è necessario creare questa funzione con la funzione di Windows MakeProcInstance o liberare dalla di funzione con la funzione di Windows FreeProcInstance.
Inoltre non è necessario esportare il nome di funzione in un'istruzione EXPORTS nei file di definizione moduli dell'applicazione. È possibile utilizzare il modificatore di funzione EXPORT, come in
int CALLBACK EXPORT AFunction**(LPSTR**, LPSTR);
affinché il compilatore a generare il record appropriato di esportazione per l'esportazione per nome senza alias. Questa procedura è valida per la maggior parte delle necessità. Per alcuni casi speciali, come esportare una funzione tramite ordinale o dall'alias l'esportazione, è necessario utilizzare un'istruzione EXPORTS in un file di definizione di modulo.
Per compilare programmi MFC (Microsoft Foundation, in genere si utilizzeranno le opzioni del compilatore /GEs e /GA. L'opzione del compilatore /Gw non viene utilizzata con le classi MFC (Microsoft Foundation. Se si utilizza la funzione Windows MakeProcInstance, è necessario eseguire il cast in modo esplicito del puntatore a funzione restituito da FARPROC al tipo stato necessario in questa API). Le interfacce di callback di registrazione sono indipendenti dai tipi è necessario passare un puntatore a funzione che indica il tipo corretto di funzione per il callback specifico).
Si noti inoltre che tutte le funzioni di callback devono intercettare le eccezioni (Microsoft Foundation class) prima di restituire a Windows, poiché le eccezioni non possono essere generate oltre i limiti di callback. Per ulteriori informazioni sulle eccezioni, vedere l'articolo Eccezioni.
Esempio
// 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));
}
}
Requisiti
Header: afxwin.h