|
플그램시러시러 님이 쓰신 글 :
: 죄송합니다. 제 질문이 엉망이라서 아마도 답이 없었던 듯 합니다...
:
: 앞에 다른 분의 의견에 따르면, 제가 프로그램을 종료하는 루틴을 막아서 시스템 종료가 안된다고 하시더군요...
:
: 정확한 것 같습니다. 제가 폼의 X버튼을 누를 때, 종료되지 않도록 하고 시스템 트레이로 내려가도록 바꾸었습니다.
:
: 방법은 간단하게...
:
: 폼에 어떤 값을 주고... CloseQuery에서 다음과 같이 처리했습니다.
:
: void __fastcall TFrmSANitMain::FormCloseQuery(TObject *Sender,
: bool &CanClose)
: {
: if(FrmSANitMain->bFinish)
: {
: CanClose = TRUE;
: WSACleanup();
: }
: else
: {
: CanClose = FALSE;
:
: FrmSANitMain->Hide();
: }
: }
:
: CanClose에 FALSE를 주니 프로그램이 X 표를 눌러도 종료되지 않고, Hide를 통해서 간단하게 시스템 트레이로 내려보낼 수 있었습니다.
: 그런데 앞에서 말씀드린 것처럼, 시스템 재시작, 종료 시에...시스템이 종료로 들어가지 않는군요...
:
: 어떻게 해결해야 할까요? 혹시 시스템에서 이벤트를 받을 수 있습니까? 아니면 어떻게 해야할까요?
:
: 답변부탁드립니다.
:
: 플그램시러시러 드림.
폼 클래스 헤더 파일에:
bool bFinish;
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)
{
bFinish=true;
}
Msg.Result=0;
}
+
FormCloseQuery 이벤트 핸들러 내에서
CanClose = bFinish;
|