다이얼로그 종료시 WM_CLOSE 메시지가 전달되지만, 다이얼로그 종료 전 윈도우가 먼저 종료된다면 WM_CLOSE 메시지는 전달되지 않는다. 따라서 응용프로그램이 윈도우 종료 시 수행해야할 작업이 있다면, WM_QUERYENDSESSION, WM_ENDSESSION 메시지 처리를 통해 가능하다.
WM_QUERYENDSESSION
시스템 종료 확인 메시지.
윈도우에선 시스템 종료 또는 로그오프 시 WM_QUERYENDSESSION 메시지를 모든 윈도우에 전송하고, 응용프로그램은 이 메시지를 받아서 준비작업을 수행한 뒤 TRUE를 반환하거나 종료를 취소하기 위해 FALSE를 반환할 수 있다.
만약 모든 응용프로그램이 TRUE를 반환하면 WM_ENDSESSION 전송 단계로 넘어간다.
WM_ENDSESSION
시스템 종료 메시지
시스템 종료가 결정되었고 곧 종료됨을 알리는 메시지이다.
응용프로그램에선 WindowProc 함수를 재정의하여 그 안에서 메시지를 처리하거나 혹은 WM_QUERYENDSESSION 메시지의 핸들러를 등록해 필요한 작업을 수행할 수 있다.
LRESULT CMyWnd::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) {
// 윈도우 메시지 처리 로직을 여기에 작성합니다.
switch(message)
{
case WM_QUERYENDSESSION:
break;
// ...
}
// 기본적인 메시지 처리를 위해 MFC의 기본 클래스 구현을 호출할 수도 있습니다.
return CWnd::WindowProc(message, wParam, lParam);
}
'프로그래밍 > MFC (C++)' 카테고리의 다른 글
Win32 API ] 메시지 루프 (0) | 2023.11.13 |
---|---|
MFC ] 특정 컨트롤에 포커스 설정하기 (0) | 2023.11.06 |
MFC ] 사용자 지정 메시지와 메시지 처리기 만들기, SendMessage, PostMessage (0) | 2023.09.15 |
MFC ] 리스트박스 스크롤 하단으로 내리는 법 (0) | 2023.09.15 |
MFC ] 다이얼로그 생성시 함수 호출 순서 (0) | 2023.09.15 |