C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[4587] [질문]Tray Icon이 있는 상태에서 Os의 showdown이 안되는데요..
안지현 [] 3478 읽음    2000-12-12 00:00
Tray Icon이 있는 상태에서 Os의 showdown이 안되는데요..

Windows 98계열에서는 정상적으로 Shotdown이 되는데요...
Windows 2000 pro에서 Shotdown이 되지 않네요..

프로그램은 Builder의 Sample의 TrayIcon을 사용하지 않고 Form에서 만들어서 사용했습니다.

Shot down 메시지를 받는 부분은 두부분인데요...
Form 부분과 tray부분입니다.
WM_QUERYENDSESSION과 WM_ENDSESSION의 메시지를 받는데요...
Tray만 있고 form이 hidden상태에 있으면 정상적으로 Shotdown이 됩니다.
그런데.. Tray와 form이 같이 떠있는 상태에 있으면, 그 둘은 죽지만 기타 나머지 하위 프로그램들이 죽지 않습니다.. 예를 들어 로그오프를 하면, 익스플로러와 같은 프로그램과 제 프로그램들은 죽지만, Tray쪽에 있는 볼륨과 같은것들은 죽지 않고 있고 로그오프가 되지않고 그대로 있습니다. 그리고 다시 로그오프를 하면 로그오프가 되고요..

메시지가 오는 순서는 Form의 QueryEndSession, Tray의 QueryEndSession, Form의 EndSession, Tray의 EndSession입니다.

Tray Message
      case WM_QUERYENDSESSION:
      {
         Message.Result = 1;
         break;
      }
      case WM_ENDSESSION:
      {
         Message.Result = 0;
         DeleteTrayIcon();                   // TrayIcon을 Delete시키는 함수
         break;
      }

Form Message
void __fastcall TAhaForm::OnQueryEndSession(TMessage& msg)
{                       //WM_QUERYENDSESSION
   msg.Result = 1;
}

void __fastcall TAhaForm::OnEndSession(TMessage& msg)
{                       //WM_ENDMESSAGE
   msg.Result = 0;
   Close();                              // Close을 안하면 Form이 Close가 안되더군요..
}

+ -

관련 글 리스트
4587 [질문]Tray Icon이 있는 상태에서 Os의 showdown이 안되는데요.. 안지현 3478 2000/12/12
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.