Neuen Dialog öffnen, aber nicht Modal !

tefla

Erfahrenes Mitglied
Hallo,

ich möchte einen neuen Dialog öffnen. In der MFC geht das ja normal recht einfach, zumindestens mit einem DoModal(), aber genau das brauch ich im Moment nicht.

DoModal gehts ja so:

Man hat eine Controlvariable für das Dialogfeld und führt noch

ControlVariable.DoModal();

aus. Es gibt doch sicherlich auch einen ähnlichen Befehl damit das Dialogfeld nicht Modal ist.

Hab bisher leider nix in der Form gefunden, nur viel komplizierter.
 

Daniel Toplak

Erfahrenes Mitglied
Das geht fast genauso einfach.
Z.B. so:
Code:
// Zeiger erstellen
pMyDlg = new CMyDlg;

// Dialog erstellen
pMyDlg->Create(IDD_MYDLG, this);

// Variablen setzen
...

// Dialog anzeigen
pMyDlg->ShowWindow(SW_SHOW);

// Zeiger löschen
delete pMyDlg;

Gruß Homer
 

Raziel_XXL

Grünschnabel
Hallo,

icg bekomme immer die Meldung "IDD_MYDIALOG: nichtdeklarierter Bezeichner", woran kann das liegen?

Code:
PHP:
CLoadBarDlg* pDialog;

void CHauptDlg::OnButton1() 
{
   pDialog = new CLoadBarDlg();
   if(pDialog != NULL)
   {
      BOOL ret = pDialog->Create(IDD_MYDIALOG,this);
      if(!ret)   //Create failed.
         AfxMessageBox("Error creating Dialog");
      pDialog->ShowWindow(SW_SHOW);
   }
   else
      AfxMessageBox("Error Creating Dialog Object");
}
... aus der MSDN ;).


Wenn ich IDD_MYDIALOG zwischen hochkommas setze habe ich zwar keine Fehler mehr aber das ganze Programm stürzt beim Createn ab!

Hat einer eine Idee?
 

Sovok

Erfahrenes Mitglied
wie wärs wenn du in der ressourcenliste einen neuen dialog hinzufügst mit der id IDD_MYDIALOG

benutz ausserdem für den anfang lieber...


CDialog* pDialog;

pDialog = new CDialog();
if(pDialog != NULL)
{
BOOL ret = pDialog->Create(IDD_MYDIALOG,this);
if(!ret) //Create failed.
AfxMessageBox("Error creating Dialog");
pDialog->ShowWindow(SW_SHOW);
}
else
AfxMessageBox("Error Creating Dialog Object");
}
 

Raziel_XXL

Grünschnabel
thx, hab's hinbekommen.

Aber ... wie kriege ich die Steureelemente, die auf dem Dialog sein "sollen" hin?
Muss ich jedes einzelne Auch selber erstellen?

Ich möchte eine Statusanzeige haben ( CProgressCtrl ). Aber wie Create ich sie so, dass sie auch zu sehen ist?

Hab das im Constuctor des Dialogs stehen;
PHP:
CProgressCtrl m_LoadBar;

m_LoadBar.Create(WS_CHILD|WS_VISIBLE|PBS_SMOOTH,CRect(10,10,200,30),this,1);

was fehlt da noch?
 

Raziel_XXL

Grünschnabel
mhh ... dann kriege ich ein Nacktes-Dialogfenster zu sehen, alles was ich an Buttons und so draufgemacht habe ist nicht zu sehen.
 

Raziel_XXL

Grünschnabel
mhh...

Ich versuche den Dialog zu starten (was auch klappt) noch vor dem Hauptdialog.DoModal();. Der Dialog wird geöffnet bleibt aber völlig leer bis Hauptdialog.DoModal();.

Gibt es eine Möglichkeit ihn dazu zu bringen, dass er sofort die Steuerellemente 'zeichent' und nicht wartet, bis die Hauptform den DoModel Befehl bekommt.

Also ich versuche den Dialog aus der Haupt.cpp zu starten nicht aus der HauptDlg.cpp.