2010-11-21 2 views
0

또는 펜 브러시와 같은 기타 gdi 핸들. 어떻게 유효한 지 어떻게 알 수 있습니까?유효한 gdi 지역 핸들인지 어떻게 알 수 있습니까?

+0

왜이 기능이 필요합니까? GDI 개체를 만들고 파괴하는 사람이기 때문에 유효한지 여부를 알고 있어야합니다. – casablanca

+0

난 그냥 만들면 성공 여부를 모르겠다. – lovespring

+3

대부분의 GDI 함수는 실패 할 경우 'NULL'핸들을 반환합니다. 관심있는 특정 기능에 대한 MSDN 설명서를 확인하십시오. – casablanca

답변

5

은 유효하지 않은 핸들을 들고있을 수 있습니다. 필요한 경우 DeleteObject()를 호출 한 후 핸들을 NULL로 설정하여 완전히 이해되도록하십시오. 나쁜 핸들을 통과했기 때문에 GDI 함수가 거짓 값을 반환한다고 가정하면 안전하지 않습니다.

+0

+1. 일반적으로이 경우 GDI 작성 기능이 성공했는지 여부를 확인하려는 그의 수정 설명을 읽는 중입니다. 실패하면 NULL이 반환됩니다. 왜 NULL인가? 포인터로 사용되는 GDI 핸들 이제 더 이상 필요하지 않습니다. – Joshua

+0

그래,이 경우 CrashAndBurnMyAppBecauseIHaveANastyHandleLeakInMyProgram() 함수를 호출하면됩니다. –

2

대답은 다음과 같습니다. 어디에서 핸들을 가져 왔습니까?

간단히 말해서, 그것은 예술과 같습니다 : 어떻게 그것이 진짜인지, 가짜가 아닌지 어떻게 알 수 있습니까? 몇 가지 "경험적 방법"이 있지만 100 % 효과적인 방법은 어디에서 왔는지 알아 보는 것입니다.

GDI 영역과 관련하여 GDI 함수가 반환하는 영역 핸들 만 신뢰해야합니다.

:

+0

비유를 좋아하십시오. – Tergiver

0

GetObject() 또는 GetObjectType()를 사용해보십시오. 객체 핸들이 유효하지 않은 경우 NULL을 반환해야합니다.

어디에서 디버깅을 할 수 있는지 확인할 수 있습니다. 완벽한 세계에서, 우리는 우리의 사물을 추적하고 그들이 언제 어디 있는지 알 수 있습니다.

우리는 완벽한 세상이 아닙니다.

관련 문제