AfxGetApp alternative in DLL
-
Hallo zusammen,
gibt es eine Alternative zur Funktion AfxGetApp()? (AfxGetThread() hab ich schon versucht, kommt das selbe bei raus)
Ich versuche im Moment Nachrichten per PeekandPump zu verwalten. Ich benutze eine ProgressBar, die in einem Dialog angezeigt wird wenn die entsprechende Funktion von außerhalb der dll aufgerufen wird.Der Dialog wird angezeigt und auch der statusbalken ändert sich wie es sein sollte.
Mein Problem ist nun, das das Programm direkt abstürzt sobald ich mit der Maus über den Dialog gehe. (Unhandled Exception)Der fehler passiert wenn ich die methode
AfxGetApp()->PumpMessage()
aufrufe (d.h. AfxGetApp() läuft durch und erst bei PumpMessage bricht er ab)
Kann mir jemand helfen?
-
Verwendet die EXE und die DLL die *gleiche* MFC!? Du musst schon einstellen, dass sie die shared MFC verwenden!
-
Nein, daran lag es nicht.
Die exe benutzt garkeine MFC funktionen.Der Fehler war das ich in einer DLL dei AFXGetApp() bzw AFXGetThread() metoden nicht benutzten darf, da sie dort NULL zurück geben können.
Die lösung war einfach den Teil durch folgenden zu ersetzten:
if ( ::GetMessage(&msg, NULL, 0, 0)){ ::TranslateMessage(&msg); ::DispatchMessage(&msg); } else { ::PostQuitMessage(0); break; }
So habe ich die MFC methode durch reine WinAPI funktionen ersetzt und bin so der möglichen NULL ausgewichen