Re: ID_APP_EXIT debuggen

15/11/2010 - 16:31 von Peter Mairhofer | Report spam
Hallo,

Am 15.11.2010 14:36, schrieb Martin Richter [MVP]:

Am Besten CFrameWnd::OnClose debuggen.



Soeben versucht. Zu ExitInstance() bzw. den Destuktoren springt er aber
dennoch nicht :-(


Jede wette:
Deine Anwendung stelle ein COM Objekt zur Verfügung.
Dieses hat den REF Count Deiner Anwendung hochgezàhlt.
AfxOleCanExitApp liefert FALSE.



Danke, das ist mal ein guter Hinweis. Allerdings: Ich stelle nur ein
einziges COM zu Verfügung das ich selbst verwende und zwar ein Pluggable
Protocol:

class ATL_NO_VTABLE CPluggableProtocol :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CPluggableProtocol, &CLSID_PluggableProtocol>,
public IInternetProtocol,
public IInternetProtocolInfo

Dieses wird bei InitInstance mit CoInternetGetSession::RegisterNameSpace
registriert und bei ExitInstance mit
CoInternetGetSession::UnregisterNameSpace deregistriert.

Ansonsten verwende ich selbst das WebBrowser Control.

Allerdings: Anfangs hatte ich das Problem schonmal das
UnregisterNameSpace fehlgeschlagen ist. War aber kein Problem, das gab
lediglich ein Memoryleak beim Debugger, aber beendet wurde das Programm
trotzdem erfolgreich.

Für die einzelne Instanz verwende ich:
http://support.microsoft.com/kb/243953

Ich hab mal wie von Edzard vorgeschlagen eine Debugversion mit Logfile
gebaut. Darin hab ich in ExitInstance auch eine Abfrage auf
AfxOleCanExitApp() drinnen. Leider weiss ich sonst nicht wo ich
Debugmeldungen hàtte plazieren sollen - ich tapp' ja irgendwie völlig im
Dunklen :-(

LG Peter
 

Lesen sie die antworten

#1 Martin Richter [MVP]
15/11/2010 - 16:44 | Warnen spam
Hallo Peter!

Hallo,

Am 15.11.2010 14:36, schrieb Martin Richter [MVP]:
> Am Besten CFrameWnd::OnClose debuggen.

Soeben versucht. Zu ExitInstance() bzw. den Destuktoren springt er aber
dennoch nicht :-(



Eben. Wenn er hier stehen bleibt, dann wird kein PostQuit ausgelöst!

> Jede wette:
> Deine Anwendung stelle ein COM Objekt zur Verfügung.
> Dieses hat den REF Count Deiner Anwendung hochgezàhlt.
> AfxOleCanExitApp liefert FALSE.

Danke, das ist mal ein guter Hinweis. Allerdings: Ich stelle nur ein
einziges COM zu Verfügung das ich selbst verwende und zwar ein Pluggable
Protocol:

class ATL_NO_VTABLE CPluggableProtocol :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CPluggableProtocol, &CLSID_PluggableProtocol>,
public IInternetProtocol,
public IInternetProtocolInfo

Dieses wird bei InitInstance mit CoInternetGetSession::RegisterNameSpace
registriert und bei ExitInstance mit
CoInternetGetSession::UnregisterNameSpace deregistriert.

Ansonsten verwende ich selbst das WebBrowser Control.



Und wird der Ref-Count für die Applikation durch Dein Objekt hochgezàhlt?
Welche Factory benutzt Du denn?

Martin Richter [MVP] WWJD http://blog.m-ri.de
"A well-written program is its own heaven; a poorly written
program is its own hell!" The Tao of Programming
FAQ: http://www.mpdvc.de Samples: http://www.codeproject.com

Ähnliche fragen