문제

CDC 유형의 객체 인 DC가 있으며 HDC 객체를 얻고 싶습니다.

MSDN 문서를 읽었습니다 여기, 그러나 실제로 이해하지 못합니다.

누군가 나 에게이 작업을 수행하는 방법에 대한 간단한 예/설명을 제공 할 수 있습니까?

도움이 되었습니까?

해결책

CDC 클래스가 있습니다 operator HDC() 컴파일러가 CDC 객체를 암시 적으로 HDC로 변환 할 수있는 정의. 따라서 CDC*와 HDC를 취하는 함수가 있으면 포인터를 피하는 데 도움이되어 기능으로 보냅니다.

다른 팁

너가 가질 때 CDC 객체는 암시 적으로 변환됩니다 HDC 필요할 땐:

CDC dc;
HDC hdc = dc; // HDC hdc = dc.operator HDC();

포인터가 있다면 CDC 그런 다음 객체를 사용합니다 GetSafeHdc 더 명확하게 보일 것입니다 :

CDC* pdc = SOME;
HDC hdc = pdc->GetSafeHdc();

CDC 합리적인 근사치로 C ++ 클래스는 장치 컨텍스트에 대한 핸들 인 HDC를 캡슐화합니다.

당신이 연결하는 documenation은 변환을 설명합니다 operator, 클래스가 클래스의 인스턴스에서 다른 유형으로 암시 적 변환을 허용하기 위해 클래스가 공급할 수있는 C ++ 구성입니다. 이 경우 암시 적 변환은 기본 핸들 (HDC)을 초래합니다. CDC 인스턴스 캡슐화.

a를 사용하여 변환을 수행 할 수 있습니다 CDC 어디서나 인스턴스로 변환해야했습니다. HDC.

가장 간단하게 :

void f( const CDC& cdc )
{
    HDC hdc = cdc;

    // use hdc here
}
HDC hDC = dc;

그냥 할당하십시오.

CDC cdc = something.
HDC hdc = cdc;
if (hdc != 0)
{
  //success...
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top