다음을 통해 공유


CDC::EnumObjects

펜을 열거 하 고 브러시 장치 컨텍스트에서 사용할 수 있습니다.

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

매개 변수

  • nObjectType
    개체 형식을 지정합니다. 이 값을 가질 수 있습니다 OBJ_BRUSH 또는 OBJ_PEN.

  • lpfn
    응용 프로그램 제공 콜백 함수의 프로시저 인스턴스의 주소가입니다. 아래의 "설명" 단원을 참조 하십시오.

  • lpData
    응용 프로그램에서 제공한 데이터를 가리킵니다. 데이터 개체 정보와 함께 콜백 함수에 전달 됩니다.

반환 값

마지막으로 반환 값을 지정 된 콜백 함수. 그 의미는 사용자 정의입니다.

설명

각 개체에 대해 지정 된 형식의 개체에 대 한 정보를 전달 하는 콜백 함수 라고 합니다. 시스템 개체를 더 이상 또는 콜백 함수는 0을 반환 될 때까지 콜백 함수를 호출 합니다.

참고 Microsoft Visual C++의 새 기능 사용 하 여 함수에 전달 하는 일반 함수 사용 EnumObjects. 전달 주소 EnumObjects 로 내보낸 함수에 대 한 포인터입니다 내보내기 및 파스칼 호출 규칙을 합니다. 보호 모드 응용 프로그램에 Windows에서이 함수를 만들 필요가 MakeProcInstance 함수 또는 함수를 사용한 후 약속을 FreeProcInstance Windows 함수.

함수 이름을 내보낼도 하지 않습니다는 내보내기 응용 프로그램의 모듈 정의 파일에서 문을. 대신 사용할 수 있는 내보내기 한정자로 작동

int 콜백 내보내기 AFunction**(LPSTR**, LPSTR);

내보내기에 대 한 적절 한 내보내기 레코드 없이 별칭 이름 생성 하 게. 이것은 대부분의 요구 사항에 적용 됩니다. 함수 내보내기, 별칭 또는 서 수 내보내기 일부 특수 한 경우에도 사용 해야는 내보내기 모듈 정의 파일에서 문을.

Mfc 프로그램 컴파일하는 데, 일반적으로 /GA 및 /GEs 컴파일러 옵션을 사용 합니다. /Gw 컴파일러 옵션은 mfc는 사용 하지 않습니다. (Windows 함수를 사용 하지 경우 MakeProcInstance, 반환 된 함수 포인터를 명시적으로 캐스팅 해야 합니다 farproc이 이 API에 필요한 형식입니다.) 이제 형식 안전 콜백 등록 인터페이스입니다 (오른쪽 종류에 대 한 특정 콜백 함수를 가리키는 함수 포인터를 전달 해야 합니다).

또한 모든 콜백 함수 콜백을 경계에서 예외가 throw 될 수 있으므로 Windows 수를 반환 하기 전에 Mfc 예외 트래핑 해야 참고. 예외에 대 한 자세한 내용은 예외.

예제

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

요구 사항

헤더: afxwin.h

참고 항목

참조

CDC 클래스

계층 구조 차트

EnumObjects