problem when windows system shutdown.
Mao Zhihong -- maozh@geocities.com Wednesday, January 08, 1997 Environment: VC++ 1.52, VC++ 4.0 with patch, Win3.1, Win 95 Hi, I have a very strange problem: Only when my MFC application is closed by Windows shutdown, it will cause a GP error. In my appilcation, I have 2 document template, one kind of document is another's manager. When the manager document close, it will close those managed documents, when managed documents close, it will nitify its man- ager documents. my codes are like these: class CMyDoc; class CManagerDoc : public CDocument { ... public: CManagerDoc(); ~CManagerDoc(); CMyDoc *m_pMyDoc; void NotifyClose(); ... }; class CMyDoc : public CDocument { ... public: CManagerDoc *m_pManager; virtual void OnCloseDocument(); ... }; ... CManagerDoc::CManagerDoc() { ... m_pMyDoc = NULL; ... } CManagerDoc::~CManagerDoc() { ... if (m_pMyDoc != NULL) { m_pMyDoc->m_pManager = NULL; // don't let it notify me m_pMyDoc->OnCloseDocument(); } ... } CManagerDoc::NotifyClose() { m_pMyDoc = NULL; } .... void CMyDoc::OnCloseDocument() { if (m_pManager != NULL) m_pManager->NotifyClose(); CDocument::OnCloseDocument(); } ... every thing is ok when you close this application normally(close by ALT+F4, close menu, close icon, or close by windows task manager, etc.). but when windows system shut down, a GP error will occur when my application close. (in windows 95, each kind of shut down will cause this error) Do anybody know why and can give me any advise?! Thanks in advance. yours mao zhihong -- -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Mao Zhihong DreamyRainbow Software Studio Oooo. .oooO Voc/Fax : 86-25-5408086 ( ) ( ) E-Mail : mailto:maozh@geocities.com ) / \ ( mailto:mao@seu.edu.cn (_/ \_) URL : http://www.geocities.com/Vienna/2898 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= "We get to create only a few things in this life. We really have such a short time here, some of us just want to make it count." - Steven Jobs
Dulepov Dmitry -- dima@ssm6000.samsung.ru Friday, January 10, 1997 [Mini-digest: 2 responses] [Mailer: "Groupware E-Mail". Version 1.02.051] Handle WM_ENDSESSION to close your application. Use SendMessage(WM_CLOSE) in your CMainFrame. Shutdown process differs in different systems (especially in Win95). I researched it for some time, but to handle WM_ENDSESSION is the easiest way to work around it that I know. Dmitry A. Dulepov Samsung Electronics Co., Ltd. Russian Research Center Phone: +7 (095) 213-9207 Fax: +7 (095) 213-9196 E-mail: dima@src.samsung.ru ==================================== ----------------------------- > [From: Mao Zhihong > [Address: maozh@geocities.com > [To: MFC Board <" mfc-l"@netcom.com> > [Date: Fri Jan 10 10:22:59 1997 >Environment: VC++ 1.52, VC++ 4.0 with patch, Win3.1, Win 95 > >Hi, > I have a very strange problem: Only when my MFC application is closed >by >Windows shutdown, it will cause a GP error. > In my appilcation, I have 2 document template, one kind of document is >another's manager. When the manager document close, it will close those >managed documents, when managed documents close, it will nitify its man- >ager documents. my codes are like these: > > class CMyDoc; > class CManagerDoc : public CDocument > { > ... > public: > CManagerDoc(); > ~CManagerDoc(); > CMyDoc *m_pMyDoc; > > void NotifyClose(); > ... > }; > > class CMyDoc : public CDocument > { > ... > public: > CManagerDoc *m_pManager; > > virtual void OnCloseDocument(); > ... > }; > > > ... > CManagerDoc::CManagerDoc() > { > ... > m_pMyDoc = NULL; > ... > } > > CManagerDoc::~CManagerDoc() > { > ... > if (m_pMyDoc != NULL) { > m_pMyDoc->m_pManager = NULL; // don't let it notify me > m_pMyDoc->OnCloseDocument(); > } > ... > } > > CManagerDoc::NotifyClose() > { > m_pMyDoc = NULL; > } > > .... > > void CMyDoc::OnCloseDocument() > { > if (m_pManager != NULL) > m_pManager->NotifyClose(); > > CDocument::OnCloseDocument(); > } > ... > > every thing is ok when you close this application normally(close by >ALT+F4, >close menu, close icon, or close by windows task manager, etc.). but >when >windows system shut down, a GP error will occur when my application >close. >(in windows 95, each kind of shut down will cause this error) > Do anybody know why and can give me any advise?! Thanks in advance. > > yours > mao zhihong > > >-- > -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= > Mao Zhihong DreamyRainbow Software Studio > Oooo. > .oooO Voc/Fax : 86-25-5408086 ( ) > ( ) E-Mail : mailto:maozh@geocities.com ) / > \ ( mailto:mao@seu.edu.cn (_/ > \_) URL : http://www.geocities.com/Vienna/2898 > -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= > >"We get to create only a few things in this life. We really have >such a short time here, some of us just want to make it count." > - Steven Jobs -----From: Bob WeidmanI'm not sure this is related to MFC. I have experienced the same behavior from Netscape 3.0 when doing a shutdown. (Unless Netscape uses MFC). I have seen this with programs written with 4.1, 4.2b MFC doing this too. Mao Zhihong wrote: > > Environment: VC++ 1.52, VC++ 4.0 with patch, Win3.1, Win 95 > > Hi, > I have a very strange problem: Only when my MFC application is closed > by > Windows shutdown, it will cause a GP error. > In my appilcation, I have 2 document template, one kind of document is > another's manager. When the manager document close, it will close those > managed documents, when managed documents close, it will nitify its man- > ager documents. my codes are like these: > > class CMyDoc; > class CManagerDoc : public CDocument > { > ... > public: > CManagerDoc(); > ~CManagerDoc(); > CMyDoc *m_pMyDoc; > > void NotifyClose(); > ... > }; > > class CMyDoc : public CDocument > { > ... > public: > CManagerDoc *m_pManager; > > virtual void OnCloseDocument(); > ... > }; > > > ... > CManagerDoc::CManagerDoc() > { > ... > m_pMyDoc = NULL; > ... > } > > CManagerDoc::~CManagerDoc() > { > ... > if (m_pMyDoc != NULL) { > m_pMyDoc->m_pManager = NULL; // don't let it notify me > m_pMyDoc->OnCloseDocument(); > } > ... > } > > CManagerDoc::NotifyClose() > { > m_pMyDoc = NULL; > } > > .... > > void CMyDoc::OnCloseDocument() > { > if (m_pManager != NULL) > m_pManager->NotifyClose(); > > CDocument::OnCloseDocument(); > } > ... > > every thing is ok when you close this application normally(close by > ALT+F4, > close menu, close icon, or close by windows task manager, etc.). but > when > windows system shut down, a GP error will occur when my application > close. > (in windows 95, each kind of shut down will cause this error) > Do anybody know why and can give me any advise?! Thanks in advance. > > yours > mao zhihong > > > -- > -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= > Mao Zhihong DreamyRainbow Software Studio > Oooo. > .oooO Voc/Fax : 86-25-5408086 ( ) > ( ) E-Mail : mailto:maozh@geocities.com ) / > \ ( mailto:mao@seu.edu.cn (_/ > \_) URL : http://www.geocities.com/Vienna/2898 > -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= > > "We get to create only a few things in this life. We really have > such a short time here, some of us just want to make it count." > - Steven Jobs
Roger Onslow/Newcastle/Computer Systems Australia/ Monday, January 13, 1997 Environment: VC++ 1.52, VC++ 4.0 with patch, Win3.1, Win 95 Destructors are not called when Windows Shutdown occurs. This is documented in MSDN (Ask DrGui I think) ============================================================ Roger Onslow Software Development Manager - Quisine Division Computer Systems Australia ------------------------------------------------------------ Ph: +61 49 675266 Fax: +61 49 675554 Personal mailto:Roger_Onslow@compsys.com.au Quisine info mailto:Quisine@compsys.com.au Visit us at http://www.compsys.com.au ============================================================ Quisine - Designing for the Future ============================================================
Hemanta Banerjee -- hemantab@indus.hclt.com Monday, January 13, 1997 Hi , I think its better to handle the WM_QUERYENDSESSION. U can check up whether u want to actually end windows at that point of time (say middle of a processing in ur appllication) and act suitably. Check MSDEV help. Bye , Hemanta Banerjee. > > Handle WM_ENDSESSION to close your application. Use SendMessage(WM_CLOSE) in your CMainFrame. Shutdown process differs in different systems (especially in Win95). I researched it for some time, but to handle WM_ENDSESSION is the easiest way to work around it that I know. > >
Hemanta Banerjee -- hemantab@indus.hclt.com Tuesday, January 14, 1997 > hi , > Environment: VC++ 1.52, VC++ 4.0 with patch, Win3.1, Win 95 > > Destructors are not called when Windows Shutdown occurs. > > This is documented in MSDN (Ask DrGui I think) It will be easier for u to trap the WM_QUERYENDSESSION if u want to have a choice whether windows is to actually shut down when ur app is running or u can trap WM_ENDSESSION which u will get on windows shutdown. Here u call call the destructors of the actual objects. Btw the destructors cannot be called on windows shutdown and that seems quite logical and windows does not store a run time object list of all object active in the system. Bye, Hemanta Banerjee. Regards, Hemanta Banerjee. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Office :- Residence :- HCL Technologies Limited, #17, Sriramnagar 1st Cross, 50-53 Greams Road, Thiruvanmiyur, Madras - 600 0006. Madras - 600 041. Ph :- (91)-(44)-8279140,8279312 (91)-(44)-####### email :- hemantab@hclt.com laddo@hotmail.com ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Вернуться в корень Архива |