CDC::EnumObjects
Enumera los lápices y pinceles disponibles en un contexto de dispositivo.
int EnumObjects(
int nObjectType,
int ( CALLBACK * lpfn )( LPVOID, LPARAM ),
LPARAM lpData
);
Parámetros
nObjectType
Especifica el tipo de objeto. Puede tener los valores OBJ_BRUSH o OBJ_PEN.lpfn
Es la dirección de la procedimiento- instancia de función de devolución de llamada aplicación- proporcionada. Vea la sección “las notas”.lpData
Señala a los datos aplicación- proporcionados. Los datos se pasa a la función de devolución de llamada junto con la información del objeto.
Valor devuelto
Especifica el valor devuelto se pasa por función de devolución de llamada. Su significado está definido por el usuario.
Comentarios
Para cada objeto de un tipo determinado, la función de devolución de llamada que se pase lleva la información de ese objeto. El sistema la función de devolución de llamada hasta que no dejan de objeto o retornos 0 de la función de devolución de llamada.
Observe que las nuevas características de Microsoft Visual C++ permiten utilizar una función ordinaria como la función pasada a EnumObjects. La dirección pasada a EnumObjects es un puntero a una función exportada con EXPORT y con la convención de llamada Pascal. En aplicaciones en modo protegido, no tiene que crear esta función con la función de Windows MakeProcInstance o liberar el uso posterior de función con la función de FreeProcInstance Windows.
Tampoco tiene que exportar el nombre de función en una instrucción de EXPORTACIONES en el archivo de definición de módulo de la aplicación. Puede usar el modificador de la función de EXPORTAR , como en
int CALLBACK EXPORT AFunction**(LPSTR**, LPSTR);
para hacer que el compilador emita el registro correspondiente de exportación para la exportación por nombre sin un alias. esto funciona para la mayoría necesita. Para algunos casos especiales, como exportar una función por ordinal o alias exportación, es necesario utilizar una instrucción de EXPORTACIONES en un archivo de definición de módulos.
Para compilar programas de la Microsoft foundation class, utilizará normalmente las opciones del compilador /GA y /GEs. La opción del compilador /Gw no se usa con las clases de la Microsoft foundation class. (Si usa la función de Windows MakeProcInstance, deberá convertir explícitamente el puntero a función devuelto de FARPROC el tipo necesario de esta API.) Las interfaces de registro de devolución de llamada se diseñó ahora (debe pasar un puntero a función que señale a la clase de la derecha de la función para la devolución de llamada concreto).
Observe también que todas las funciones de devolución de llamada deben las excepciones de la Microsoft foundation class catch antes de volver a Windows, dado que las excepciones no se pueden producir entre límites de devolución de llamada. Para obtener más información sobre excepciones, vea el artículo excepciones.
Ejemplo
// 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));
}
}
Requisitos
encabezado: afxwin.h