2012-01-14 2 views
3

핸들 123456이있는 창이 닫히고 다른 창이 열린다 고 가정하십시오. Windows가 희귀 한 가능성으로 새 창에 123456 핸들을 할당 할 수 있습니까?두 창에서 핸들을 동일하게 할 수 있습니까?

+0

* 가능 *하지만 거의 없습니다. 그래서 모든 의도와 목적에 따라 두 창에는 다른 핸들이 있다고 가정 할 수 있습니다. – ChrisF

+2

나는 몇 년 전에 한 번 윈도우 핸들이 제대로 닫히지 만 "페인트 실"이 아닌 진짜 버그를 가지고있었습니다. 스레드는 자신의 HWND 핸들 복사본을 가지고있었습니다. GetDC (hwnd) 및 GetClientRect (hwnd)를 계속 호출하고 전체 창 공간을 다시 칠합니다. 그런 다음 어느 날 두목이 내 앱이 실행되는 동안 내 UI 컨트롤이 Outlook 이메일 창 위에 겹쳐져있는 이유를 알고 싶었습니다. Windows가 Outlook 창에 대한 HWND 값을 재 할당했지만 내 페인트 스레드가 여전히 활성 상태였습니다! HWND가 닫히기 전에 스레드가 종료되도록 내 버그를 신속하게 수정했습니다. – selbie

답변

4

Windows가 즉시 핸들을 다시 사용하지 않을 것이라는 보장은 없습니다. 실제로 모든 기존 구현은 핸들 재사용을 피하기 위해 조치를 취합니다.

+3

회피 알고리즘은 오류가 없습니다. –

+0

두 개의 창을 비교하기 위해 핸들 만 사용하고 있습니다. – Elmo

+0

@Programmer : "두 창 비교"란 무엇을 의미합니까? 크기, 창 제목 등을 비교하고 있습니까? 아니면 핸들 vluaes 비교에 정말로 관심이 있습니까? (그렇다면 핸들 값을 비교하면 유용한 정보를 얻을 수 있다고 생각하니?) –

관련 문제