본문 바로가기
프로그래밍/시스템

윈도우 어플의 종료

by 써드아이 2010. 9. 26.
윈도우는 통상적으로 ALT+F4 / 받기버튼가 눌린경우

(1) WM_CLOSE 발생
(2) DestroyWindow() 호출
(3) WM_DESTROY 발생

와 같은 순서로 동작 하게 된다.

(1) 일반적으로 처리할 필요가 없으며 DefWindowProc() 함수가 처리하게 두면 
DestroyWindow() 를 호출하여 윈도우를 파괴하도록 한다.

(2) WM_DESTROY 메세지를 발생시켜 종료 처리를 할 기회를 주며 키보드 포커스 버리고 메뉴를 파괴하고 메세지 큐를 완전히 비운다. 동작중인 타이머가 있으면 파괴하고 클립보드 소유권을 제거 한다. Child 윈도우가 존재하면 WM_DESTROY가 후손에게도 차례로 전달된다.

(3) 메인 윈도우일 경우 반드시 PostQuitMessage() 함수를 호출하여 프로세스의 메세지 루프를 종료해야한다. 만얀 이 처리를 생략하면 윈도우만 파괴도고 루프는 계속 실행중인 상태가 되므로 프로세스는 종료되지 않는다.


CloseWindow() => 단순히 윈도우를 최소화
DestroyWindow() => WM_DESTROY 발생, 자식 윈도우를 포함한 윈도우 파괴
PostQuitMessage() => WM_QUIT 발생, 메세지 큐 종료, 메인 윈도우의 WM_DESTROY 메세지 핸들러에서 호출한다.



[참고] www.winapi.co.kr