www.mikrocontroller.net

Forum: PC-Programmierung Dialogfenster via Button öffnen


Autor: mfc noob (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?
void CProg1Dlg::OnBnClickedButton1()
{
?? 
//"IDD_TEST"
}

Autor: Doktor Gnadenlos (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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);

Autor: mfc noob (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
Header:

Prog.h
ProgDlg.h
Resource.h
stdafx.h
targetver.h

Quell:

Prog.cpp
ProgDlg.cpp
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?

Autor: M. H. (doktorgnadenlos)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.