Dialog aus Dll ausführen führt zum Absturz
-
Servus!
Ich habe eine DLL aus der ich eine Klasse exportiere.
class __declspec(dllexport) CMyDll
Innerhalb der Klasse möchte ich eine Funktion haben, die einen Dialog öffnet.
void CMyDll::OpenDlg( void )
{
AFX_MANAGE_STATE( AfxGetStaticModuleState() );CMyDlg Dlg;
Dlg.DoModal( );
}So wie ich es geschrieben habe läßt es sich problemlos compilieren. Leider stürtzt das aufrufende Programm mit "Debug Assertion Failed" in objcore.cpp Zeile 40 ab.
So wie es aussieht paßt der "this" Zeiger nicht.
Wo bzw. wie kann ich ihn richtig setzen.Viele Dank für die Hilfe
bgl
-
Am DoModal selbst wird es wohl nicht liegen. Was sagt denn der Callstack? Wo genau kracht es? Das dürfte vermutlich im Konstruktor oder in OnInitDialog passieren. Setz doch mal ein paar Breakpoints und lokalisiere die Zeile, in der es kracht. Vielleicht versuchst du schon, auf Controls zuzugreifen, die noch gar nicht durch CDialog::OnInitDialog initialisiert wurden, oder sowas in der Richtung...
-
Was sagt der Call Stack?
-
Martin Richter schrieb:
Was sagt der Call Stack?
Tss, immer eine Sekunde zu spät...

-
Servus!
Ich habe nun Breakpoints in "DoDataExchange", "OnInitDialog" und im "Konstruktor". Beim steppen komme ich dort allerdings nicht vorbei.
Es kracht sofort, wenn ich bei "Dlg.DoModal( );" "Step Into" klicke.
Der Callstack sieht danach so aus (Mit Button07 springe ich in "OpenDlg()"):
mfc80d.dll!7821024b()
[Frames below may be incorrect and/or missing, no symbols loaded for mfc80d.dll]
mfc80d.dll!78224aa8()
mfc80d.dll!7828a194()
msvcr80d.dll!10203db4()
msvcr80d.dll!1021c85b()
msvcr80d.dll!1021c852()
mfc80d.dll!7821fdb5()
mfc80d.dll!7828ab10()
MyDll.dll!CMyDll::OpenDlg(HWND__ * hWnd=0x000f0428) Line 441 C++
Testprogramm.exe!TestprogrammDlg::OnBnClickedButton07() Line 333 + 0x1a bytes C++
-
Servus!
Streiche: AFX_MANAGE_STATE( AfxGetStaticModuleState() );
Setze: AfxSetResourceHandle(AfxGetStaticModuleState()->m_hCurrentResourceHandle);Fragt mich jetzt bitte nicht, warum es so funktioniert.