윈도우는 통상적으로 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
'프로그래밍 > 시스템' 카테고리의 다른 글
WM_SYSCOMMAND, WM_COMMAND (0) | 2010.09.26 |
---|---|
WndDlgProc() (0) | 2010.09.26 |
Win32 API 어플리케이션이 시작하고 종료할 때 발생하는 메세지들 (0) | 2010.09.26 |
Win32 API로 프로그램을 작성할 때에.. (0) | 2010.09.23 |
[WinCE BSP] 스트림 인터페이스 드라이버 (0) | 2008.02.06 |