Sdílet prostřednictvím


CDC::EnumObjects

Výčet per a stopy v kontextu zařízení k dispozici.

int EnumObjects( 
   int nObjectType, 
   int ( CALLBACK * lpfn )( LPVOID, LPARAM ), 
   LPARAM lpData 
);

Parametry

  • nObjectType
    Určuje typ objektu.Může mít hodnoty OBJ_BRUSH nebo OBJ_PEN.

  • lpfn
    Je adresa postup instance funkce poskytované aplikací zpětného volání.Naleznete v části "Poznámky".

  • lpData
    Odkazuje na údaje poskytované aplikací.Data jsou předána funkci zpětného volání informace o objektu.

Vrácená hodnota

Určuje poslední vrácenou hodnotu zpětného volání funkce.Její význam je uživatelem definovaný.

Poznámky

Pro každý objekt určitého typu se nazývá funkci zpětného volání, který předáte informace pro daný objekt.Systém volá funkci zpětného volání, dokud nejsou žádné další objekty nebo funkce zpětného volání vrátí 0.

Všimněte si, že nové funkce aplikace Microsoft Visual C++ umožňují použít běžné funkce jako předaný funkci EnumObjects .Adresa předána EnumObjects je ukazatel na funkci vyvážené s EXPORT a s Pascal konvence volání.V chráněném režimu aplikace nemáte vytvořit tuto funkci systému Windows MakeProcInstance funkce nebo uvolnit po použití funkce FreeProcInstance funkce systému Windows.

Také není nutné exportovat název funkce v vývoz prohlášení v souboru s definicí modulu aplikace.Můžete použít EXPORT ve funkci modifikátor,

int EXPORTOVAT zpětné volání AFunction**(**)LPSTR, LPSTR);

způsobit kompilátoru k vyzařování řádné vývozní záznam pro vývoz podle názvu bez vyhlazení.Tento postup funguje pro většinu potřeb.U některých zvláštních případech, například funkce řadové nebo vyhlazení export, export je stále nutné použít vývoz prohlášení v souboru s definicí modulu.

Sestavování programů Microsoft Foundation, bude normálně používat /GA a volby kompilátoru /GEs.Volba kompilátoru /Gw nepoužívá Microsoft Foundation classes.(Pokud používáte funkce systému Windows MakeProcInstance, je nutné explicitně odevzdaných ukazatel vrácený funkcí z FARPROC typu potřebné v tomto rozhraní API.) Rozhraní zpětného zápisu jsou nyní bezpečné typu (musí projít v ukazatel na funkci, která odkazuje na správný druh funkce zpětného volání pro konkrétní).

Všimněte si také, že všechny funkce zpětného volání musí soutisk Microsoft Foundation výjimky před návratem k systému Windows, protože výjimky nemůže být vyvolána přes hranice zpětného volání.Další informace o výjimkách naleznete v článku výjimky.

Příklad

// 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));
   }
}

Požadavky

Záhlaví: afxwin.h

Viz také

Referenční dokumentace

Třída Nemocnosti

Graf hierarchie

EnumObjects