CDC 객체에서 HDC 객체를 얻으려면 어떻게해야합니까?
문제
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...
}
제휴하지 않습니다 StackOverflow