Dialogfenster via Button öffnen

Gast #849545
Lesenswert?

Hallo.

Ich habe mittels Visual C++ MFC einen Dialogfenster erstellt, in dem 
schon einige Funktionalitäten eingebettet sind.
Ich will nun mittels Button ein neues Dialogfenster (nicht-modal!) 
öffnen.
Ich habe bereits mittels Ressourceneditor einen entsprechenden Dialog 
<IDD_TEST> erstellt.
Wie rufe ich jetzt den neuen Dialog auf?
1
void CProg1Dlg::OnBnClickedButton1()
2
{
3
?? 
4
//"IDD_TEST"
5
}
Gast #849562
Lesenswert?

ein nichtmodaler Dialo ist etwas umständlicher zu programmieren.

in der headerdatei der ansichtsklasse muss eine membervariable 
deklariert werden :


public:
   CDialog * m_pDialog;


Im Konstruktor der Ansichtsklasse muss erscheinen :

CTestView::CTestView()
{
   m_pDialog = new CDialogNeu(this);
}


Im Destruktor dieses :

CTestView::~CTestView()
{
   delete m_pDialog;
}


Der Aufruf geschieht dann in Deiner OnBnClickedButton1()-Funktion mit

   if (m_pDialog->GetSafeHwnd() == 0)
      m_pDialog->Create(IDD_TEST);
Gast #849815
Lesenswert?

Vielen Dank für die schnelle Antwort, allerdings habe ich noch Probleme, 
wo genau ich die Ergänzungen einfügen muss.

Mein Projekt besteht aus folgenden Dateien:
1
Header:
2

3
Prog.h
4
ProgDlg.h
5
Resource.h
6
stdafx.h
7
targetver.h
8

9
Quell:
10

11
Prog.cpp
12
ProgDlg.cpp
13
stdafx.cpp
An Dialogfenstern existieren nur IDD_PROG_DIALOG sowie IDD_TEST.

Wo muss zunächst die Membervariable eingefügt werden? Bezieht sich 
"[...] in der headerdatei der ansichtsklasse"
dann auf die ProgDlg.h?

Oder muss ich mittels des Ressourceneditor für IDD_TEST erst eine eigene 
Klasse (zb. "CTest") anlegen, die von CDialog abgeleitet ist? Dabei 
würden die Dateien "Test.h" sowie "Test.cpp" erzeugt. Müssen dann dort 
die Member-Var sowie Konst/Destruktoren eingefügt werden?
#849996
Lesenswert?

Ich sehe, Dein Projekt hat kein Fenster, besteht also nur aus einem oder 
mehreren Dialogen.

Ohne das überprüft zu haben, die Membervariabel kannst Du vermutlich in 
ProgDlg.h einfügen. Allerdings übersichtlicher ist es, wenn Du mit dem 
Klassenassistenen eine eigene von CDialog abgeleitete Klasse erzeugst 
(durch Doppelklick auf das Dialogfenster im Resourcen Editor).

Hier noch ein Link, wo Du auf alle Fragen zu MFC mit Stichwortsuche 
weiterkommst :

http://www.c-plusplus.de/forum/search-var-.html

Unter "Forum" -> "MFC (Visual C++)" einstellen.
Dort werden sie geholfen.

Grüße.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren