2017-01-25 1 views
1

내가 쓰고있는 응용 프로그램은 가상 키보드를 사용하고 있습니다. 가상 키보드를 표시, 숨기기, 크기 조정 또는 이동하려면 먼저 FindWindow 함수 호출을 통해 핸들을 가져온 다음 PostMessage에 의해 몇 가지 메시지를 보내야합니다.FindWindow에서받은 핸들을 해제해야합니까?

나는 winapi에 대한 경험이 없으므로, 내 질문은이 핸들을 어떤 식 으로든 풀어 주어야 할까 아니면 한번 완료되면 잊어 버릴 수 있을까요?

가상 키보드는 내 응용 프로그램보다 긴 수명을 가진 자체 프로세스입니다.

답변

4

이 핸들을 마무리 할 필요가 없습니다. 창을 만든 프로세스가 소유하며 창을 파괴합니다.

커널 핸들 (파일 핸들, 이벤트 핸들, 뮤텍스 핸들 등)과 달리 창 핸들은 참조 카운트가 아닙니다. FindWindow으로 전화 한 다음 창 핸들로 수행해야 할 작업과 그 작업을 수행하십시오.

그러나 시스템에서 창 핸들에 대한 참조를 추적하지 않기 때문에 창을 파괴하면 해당 파괴 된 창에 대한 핸들을 보유 할 수 있습니다. 그리고 시스템이 그 핸들을 다시 사용하면 다른 창에 핸들이 생깁니다.

이런 식으로 여러 프로세스간에 사용자 인터페이스를 조정할 경우 창 폐기 이벤트를 전달하여 한 프로세스가 부실 핸들을 보유하지 않도록해야합니다.

관련 문제