CDC::EnumObjects
Énumère les stylets et des pinceaux disponibles dans un contexte de périphérique.
int EnumObjects(
int nObjectType,
int ( CALLBACK * lpfn )( LPVOID, LPARAM ),
LPARAM lpData
);
Paramètres
nObjectType
Spécifie le type d'objet.Il peut avoir des valeurs OBJ_BRUSH ou OBJ_PEN.lpfn
Est l'adresse de procédure-instance de la fonction de rappel fournie par l'application.Consultez la section « notes » ci-dessous.lpData
Points aux données fournies par l'application.Les données sont passées à la fonction de rappel avec les informations sur l'objet.
Valeur de retour
Spécifie la dernière valeur retournée par fonction de rappel.Sa signification est définie par l'utilisateur.
Notes
Pour chaque objet d'un type donné, la fonction de rappel que vous passez est appelé avec les informations de cet objet.Le système appelle la fonction de rappel jusqu'à ce que il ne sont plus d'objets ou retourne 0 de fonction de rappel.
Notez que les nouvelles fonctionnalités de Microsoft Visual C++ vous permettent d'utiliser une fonction ordinaire lorsque la fonction a réussi à EnumObjects.L'adresse passée à EnumObjects est un pointeur vers une fonction exportée à exporter et avec la convention d'appel Pascal.Dans les applications de protéger- mode, vous ne devez pas créer cette fonction avec la fonction de MakeProcInstance windows ou libérer l'aide d'une fonction avec la fonction Windows de FreeProcInstance .
Vous ne devez pas exporter le nom de fonction dans une instruction d' EXPORTS dans le fichier de définition de module de votre application.Vous pouvez utiliser le modificateur de fonction de exporter , comme dans
int CALLBACK EXPORT AFunction**(LPSTR**, LPSTR);
pour que le compilateur à émettre l'enregistrement approprié d'exportation pour l'exportation de nom sans crénelage.Cela fonctionne pour la plupart a besoin.Pour certains cas spéciaux, tels qu'une fonction exportation par ordinal ou crénelage l'exportation, vous devez toujours utiliser une instruction d' EXPORTS dans un fichier de définition de module.
Pour compiler des programmes MFC (Microsoft Foundation, vous utiliserez normalement les options du compilateur /GA et /GEs.L'option du compilateur /Gw n'est pas utilisée avec les classes MFC (Microsoft Foundation.(Si vous utilisez la fonction Windows MakeProcInstance, vous devez caster explicitement le pointeur fonction retourné par FARPROC au type requis dans cette API.) Les interfaces de rappel d'inscription sont maintenant de type sécurisé (vous devez passer d'un pointeur fonction qui indique le bon type de fonction pour le rappel spécifique).
Notez également que toutes les fonctions de rappel doit intercepter des exceptions Microsoft Foundation avant de revenir à windows, comme les exceptions ne peuvent pas être levées au delà de les limites de rappel.Pour plus d'informations sur les exceptions, consultez l'article exceptions.
Exemple
// 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));
}
}
Configuration requise
Header: afxwin.h