|
WM_ENDSESSION Windows 메시지는 Windows 종료 시 발생합니다.
그러므로, 아래와같이 전역 변수를 하나 써서 처리하고
아울러,
OnCloseQuery 이밴트 핸들러 내에서는 CanClose=SystemHaltNow; 로 하면
되지 않을까요?
bool SystemHaltNow=false;
void __fastcall WMEndSession(Messages::TMessage &Msg);
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_ENDSESSION,TMessage,WMEndSession);
END_MESSAGE_MAP(TForm);
void __fastcall TForm1::WMEndSession(TMessage &Msg)
{
if(Msg.WParam==true)
{
SystemHaltNow=true;
}
Msg.Result=0;
}
^^: 님이 쓰신 글 :
: 안녕하세여?
: 이 질문을 세번째 드리는 건데 아직두 해결 못했습니다.T.T
: 많은 분들이 관심을 가져주셔서 정말 감사드립니다..
: 근데 제가 아둔하여서 아직 해결을 하지 못하고 있습니다.
: 고수분들의 관심을 다시 함 부탁드립니다...
:
: 제가 알고 싶은것은 결국,
: 프로그램 종료 버튼을 눌렀을 때와 시스템 종료를 했을 때 죽이지 않은 어플리케이션에 발생하는 이벤트를 어떻게 구분하냐는 것이었습니다.
: 프로그램 종료 버튼을 눌렀을 땐 어플리케이션이 죽지 않고, 시스템 종료를 시켰을 때는 어플리케이션이 죽도록 하는 것을 말하는 겁니다.
: (프로그램 종료 버튼 시에는 폼을 숨기고 tasktray에 아이콘만 올리도록 하기 위함입니다. msn처럼여...)
:
: 저의 얇은 지식으로는 시스템 종료를 시켰을 때 어플리케이션에 발생시키는 이벤트가 프로그램 종료 버튼을 눌렀을 때랑 같게 느껴지거든여...
: 근데 msn은 이 둘의 구분을 두고 있으니 방법이 없는 것은 아닌거 같아서 질문을 드리는 겁니다.
: 부디 고수님들의 답변 부탁드립니다...
:
|