윈도우 메시지 루프에서 로직을 처리할 경우 메시지 루프를 Pause 시켜버리면
해당 시간 동안을 건너뛰는 효과를 가져온다.

사례 1. App 창을 윈도우 영역 밖으로 걸치게 하고 메뉴 키나 Shift + F10을 누르는 경우
; WM_CONTEXTMENU 를 무시하자.

사례 2. ALT 키나 시스템 메뉴를 이용하는 경우
; WM_SYSCOMMAND의 SC_KEYMENU, SC_MOUSEMENU, SC_PREVWINDOW, SC_NEXTWINDOW, SC_MOVE를 무시하자.

사례 3. 최대화, 최소화 버튼 등을 이용하는 경우
; WM_NCLBUTTONDOWN의 HTSYSMENU, HTMAXBUTTON, HTCAPTION, HTMINBUTTON, HTCLOSE를 무시하자.
; 각 버튼의 기능을 따로 구현하는 편이 안전하다.

사례 4. 캡션 영역을 이용하는 경우
; WM_NCRBUTTONDOWN을 무시하자.

로직 쓰레드는 메시지 루프와 분리시키는게 조금 더 안전하다는 ;;
프로세스 목록에서 해당 쓰레드를 찾아내서 Pause 시키는 경우도 고려하는 게 좋다.

728x90

+ Recent posts