Habe in einer DLL eine Form aufgenommen und ein Fenster erzeugt. Das Anlegen und zertören des Fensters erfolgt in DllEntryPoint:
<pre>
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
switch (reason)
{
case DLL_PROCESS_ATTACH:
myview=new TView(0);
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
case DLL_PROCESS_DETACH:
delete myview;
break;
}
return true;
</pre>
Die Anzeige des Fenster erolgt dann in einer Methode einer Klasse:
<pre>
void GLogFile::ShowLog()
{
.....
myview->Memo1->Lines->Clear();
myview->Memo1->Lines->LoadFromFile(fname);
myview->Show();
}</pre>
Zeige ich das Fenster mit myview->ShowModal() an, funktioniert alles
bestens. Benutze ich aber wie o.a. ->Show() kommt es bei <b>einigen</b>
Anwendungen zu Exceptions beim Beenden der Anwendung
(Zugriffsverletzung beim lesen von Adresse...). Vermutlich ist die DLL schon
entladen und das aufrufende Programm will noch was tun? Der Fehler tritt
nur beim Beenden der Anwendung auf und - weils ja Spass machen soll -
nicht bei allen Anwendungen. Das CPU Fenster zeigt, dass die Exceptionin
der aufrufenden Anwendung im Dispatch-Aufruf geworfen wird.
Grafik CPU-Fenster:http://www.marquardtnet.info/cecke/links.7/bild1.jpg
Hat jemand eine Idee, wieso warum, weshalb
Danke
Christian
<pre>
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
switch (reason)
{
case DLL_PROCESS_ATTACH:
myview=new TView(0);
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
case DLL_PROCESS_DETACH:
delete myview;
break;
}
return true;
</pre>
Die Anzeige des Fenster erolgt dann in einer Methode einer Klasse:
<pre>
void GLogFile::ShowLog()
{
.....
myview->Memo1->Lines->Clear();
myview->Memo1->Lines->LoadFromFile(fname);
myview->Show();
}</pre>
Zeige ich das Fenster mit myview->ShowModal() an, funktioniert alles
bestens. Benutze ich aber wie o.a. ->Show() kommt es bei <b>einigen</b>
Anwendungen zu Exceptions beim Beenden der Anwendung
(Zugriffsverletzung beim lesen von Adresse...). Vermutlich ist die DLL schon
entladen und das aufrufende Programm will noch was tun? Der Fehler tritt
nur beim Beenden der Anwendung auf und - weils ja Spass machen soll -
nicht bei allen Anwendungen. Das CPU Fenster zeigt, dass die Exceptionin
der aufrufenden Anwendung im Dispatch-Aufruf geworfen wird.
Grafik CPU-Fenster:http://www.marquardtnet.info/cecke/links.7/bild1.jpg
Hat jemand eine Idee, wieso warum, weshalb
Danke
Christian
Comment