Hallo Leute..
Ich haette da folgendes Problem: Hab eine MDI-Anwendung mit MFC geschrieben, die zwei Dialogfenstern (nicht modal) verwenden soll. Ich versuche daher in meiner Klasse 'MainFrm::CMDIFrameWnd' in der OnCreate() Methode die Dialoge zu erzeugen:
MyDlg1 *my_dlg_1_; // member of MainFrm
MyDlg1 *my_dlg_2_; // member of MainFrm
...
int MainFrm::OnCreate(...)
{
...
if (my_dlg_1_ == NULL)
{
my_dlg_1_ = new ControlDlgBar(this);
if (!my_dlg_1_->Create(IDD_MY_DLG_1, this))
{
TRACE0("Failed to create control bar\n");
return(-1);
}
my_dlg_1_->ShowWindow(TRUE);
}
if (my_dlg_2_ == NULL)
{
my_dlg_2_ = new ControlDlgBar(this);
if (!my_dlg_2_->Create(IDD_MY_DLG_2, this)) // !!
{
TRACE0("Failed to create control bar\n");
return(-1);
}
my_dlg_2_->ShowWindow(TRUE);
}
}
Alles anzeigen
Der erste Dialog wird korrekt erzeugt, dafuer aber schafft er den zweiten nicht. Die Dialoge sind aehnlich aufgebaut (so wie der .NET Wizard sie generiert). Hab mir den Verlauf im Callstack angeschaut und er das Problem tritt in der Anweisung
309 hWnd = ::CreateDialogIndirect(hInst, lpDialogTemplate,
310 pParentWnd->GetSafeHwnd(), AfxDlgProc);
im File 'dglcore.cpp (Methode: Cwnd::CreateDlgIndirect(...)) auf. D.h. CreateDialogIndirect(...) liefert in Zeile 309 NULL, was dazu fuehrt, dass er dann folgende Fehlermeldung ausgibt:
Failed to create my_dlg_2
Warning: Window creation failed: GetLastError returns 0x00000000
Warning: failed to create CFrameWnd.
Meine Frage nun: Habt ihr eine Ahnung wieso er das macht? Also wieso er das zweite Dialog nicht erzeugen kann, wo er doch den erste erzeugt?
PS: Hab auch versucht, die Aufrufe zu vertauschen, also zuerst dlg2 und danach dlg1 zu erzeugen, aber das Erzeugen funktioniert gleich beim zweiten (dlg2) nicht.
Bin fuer jeden Hint dankbar..
Danke im Voraus..
ciao..