CDC::EnumObjects
Enumera as canetas e pincéis disponível em um contexto de dispositivo.
int EnumObjects(
int nObjectType,
int ( CALLBACK * lpfn )( LPVOID, LPARAM ),
LPARAM lpData
);
Parâmetros
nObjectType
Especifica o tipo de objeto.Ele pode ter os valores de OBJ_BRUSH or OBJ_PEN.lpfn
É o endereço do procedimento instância da função de retorno de chamada fornecido pelo aplicativo.Consulte a seção "Comentários" abaixo.lpData
Aponta para os dados fornecidos pelo aplicativo.Os dados são passados para a função de retorno de chamada junto com as informações do objeto.
Valor de retorno
Especifica o último valor retornado pelo função de retorno de chamada.Seu significado é definida pelo usuário.
Comentários
Para cada objeto de um determinado tipo, a função de retorno de chamada que você passa é chamada com as informações para esse objeto.O sistema chama a função de retorno de chamada até que não existem mais objetos ou a função de retorno de chamada retorna 0.
Observe que novos recursos do Microsoft Visual C++ permitem que você usar uma função comum sistema autônomo a função passada para EnumObjects. O endereço passado para EnumObjects é um ponteiro para uma função exportada com EXPORTAR e com a convenção de chamada do Pascal.Em aplicativos do modo proteger, não é necessário criar essa função com o Windows MakeProcInstance funcionar ou libere a função após o uso com o FreeProcInstance Função do Windows.
Também não é necessário exportar o nome da função em um EXPORTAÇÕES demonstrativo no arquivo de definição de módulo do aplicativo.Você pode usar o EXPORTAR funcionar modificador, sistema autônomo em
int CALLBACK EXPORT AFunction**(** LPSTR, LPSTR );
Para fazer com que o compilador emita o registro de exportar adequado exportar por nome sem alias.Isso funciona para a maioria das necessidades.Em alguns casos especiais sistema autônomo exportar uma função por ordinal ou serrilhado a exportação, você ainda precisará usar um EXPORTAÇÕES demonstrativo em um arquivo de definição de módulo.
Para compilar programas Microsoft Foundation, você usará normalmente /GA e opções do compilador /GEs.opção do compilador /gw não é usada com as Microsoft Foundation classes.(Se você usar o Windows função MakeProcInstance, você precisará converter explicitamente o ponteiro de função retornado de FARPROC para o tipo necessário nessa API.) Interfaces de inscrição de retorno de chamada agora são seguros (você deve passar um ponteiro de função que aponta para o tipo certo de função para o retorno de chamada específico).
Observe também que todas as funções de retorno de chamada devem interceptar exceções Microsoft Foundation antes de retornar ao Windows, como exceções não podem ser lançadas nos limites de retorno de chamada.Para obter mais informações sobre exceções, consulte o artigo Exceções.
Exemplo
// 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
Cabeçalho: afxwin.h