화면에 탐색기와 넷텀 두개의 윈도우가 떠있다고
가정을 해봅시다.. (흐흐.. 현재 제 윈도우가 이 상황이네요..)
탐색기 윈도우 위에서 오른쪽 버튼을 눌렀을때와
넷텀 위에서 마우스 오른쪽 버튼을 눌렀을때의 동작이 다르죠..
해당 윈도우에서 발생되는 마우스 이벤트는 해당 윈도우의
메시지 처리루틴이 처리를 하게 됩니다..
헌데 이 모든 마우스 버튼 클릭 메시지를 언제나 잡아 처리를
하고 싶다면.. (바탕화면도 하나의 윈도우죠..)
OS가 발생된 메시지를 해당 윈도우에게 분배하여 전달해주기
전에 가로채어 처리를 해야 하므로
메시지 처리 루프에서 먼저 빼올 수 있도록
후킹(hooking)을 해야 합니다..
도스 시절 S/W 인터럽트 처리와 비슷하다고 보시면 됩니다..
이 시절에도 해당 인터럽트 벡터를 조작하여 발생되는 인터럽트의
원래 처리루틴 말고 자신이 작성한 루틴을 대신 실행시킬 수 있었죠..
마찬가지로 윈도우즈의 후킹체인을 조작하여
자신의 루틴이 항상 마우스 클릭 메시지를 먼저 받아 처리할 수 있도록
해야 합니다..
후킹에 관련된 내용은 고난이도 이며 (잘못 건드리면 윈95가 맛이
가버리겠죠.. 사실 저도 자세히는 모릅니다..)
이곳에 설명하기엔 양도 많으므로 생략하고..
고급 윈도우즈 프로그래밍 관련 서적이나 인터넷에서 정보를 찾아
보시면 될 것 같습니다..
기람..
미친병아리 서비였네용.. 삐약~ !!
|