Dialog einbinden
-
Erstmal Danke für die Antworten.
Aber ich muss doch irgendwie das bestimmte Dialogfenster mit der ID einbinden?Habs nun erstellt:
Das wurde generiert.
Class MeinDialog_1 { public: MeinDialog_1(void); ~MeinDialog_1(void); MeinDialog_1 (m_MeinDialog1); //das hab ich geschrieben...eine membervari erzeugt };Aber wie sag ich dem jetzt
"öffne das Diaologfenster mit IDD_DIALOG1
-
du must im klassenassi(stenten) eine klasse für die dialogresource IDD_DIALOG1
erstellen.wenn der klassenassi das macht, sieht die erstellte klasse wie folgt aus
class CAboutTestDlg : public CDialog { // Konstruktion public: CAboutTestDlg(CWnd* pParent = NULL); // Standard-Konstruktor // Dialogfelddaten //{{AFX_DATA(CAboutTestDlg) enum { IDD = IDD_ABOUTTEST_DIALOG}; // HINWEIS: der Klassenassistent fügt an dieser Stelle Datenelemente (Members) ein //}}AFX_DATA ..... .....unter
code oben schrieb:
//{{AFX_DATA(CAboutTestDlg)
enum { IDD = IDD_ABOUTTEST_DIALOG};wird die Dialogresource mit der jeweiligen klasse verbunden...
und wie du deinen dialog öffnest hab ich dir schon geschrieben

-
@rT!f@Ct schrieb:
du must im klassenassi(stenten) eine klasse für die dialogresource IDD_DIALOG1
erstellen.Und wie mache ich das genau?
Also wenn ich eine neue Klasse hinzufügen klicke, kommt dieses Fenster:
http://img203.imageshack.us/i/sreen.jpg/
-
LOL ok, mann hätte vorher fragen können...
ich ging von vc 6 aus.ich hab nur die kostenlose vc 2008 und da kann man nicht bzw. nur SEHR eingeschrängt mit resourcen arbeiten.
versuch mal auf den erstellten dialog zu klicken ob du da auch klassen erstellen kannst. vieleicht is ja vc2008 so schlau und generiert dir dann dafür ne klasse.
ansonsten kuck mal wie es in deinem Hauptdialog CMyWindow gemacht wird und versuch das abzukupfern.
-
Hallo,
ja, das ist ok, Rechtsklick auf den Dialog im Dialog-Editor, dann "Klasse hinzufügen" wählen, Name vergeben, als Basisklasse CDialog wählen. So wird eine Klasse erstellt, die auch die ID berücksichtigt.
MfG,
Probe-Nutzer
-
Hey danke für eure netten Antworten.
Hat soweit alles geklappt.
Der Klassenassisten hat folgendes erstellt:MyDialog.h
#pragma once // MyDialog dialog class MyDialog : public CDialog { DECLARE_DYNAMIC(MyDialog) public: MyDialog(CWnd* pParent = NULL); // standard constructor virtual ~MyDialog(); // Dialog Data enum { IDD = IDD_DIALOG1 }; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support DECLARE_MESSAGE_MAP() };Und MyDialog.cpp
// MyDialog.cpp : implementation file // #include "stdafx.h" #include "EinfachesFenster.h" #include "MyDialog.h" // MyDialog dialog IMPLEMENT_DYNAMIC(MyDialog, CDialog) MyDialog::MyDialog(CWnd* pParent /*=NULL*/) : CDialog(MyDialog::IDD, pParent) { } MyDialog::~MyDialog() { } void MyDialog::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(MyDialog, CDialog) END_MESSAGE_MAP() // MyDialog message handlersDie generierte .cpp File ist doch nicht zu beachten oder?
Denn ich will ja in der Haupt.cpp mein Dialog einbinden.
Ich muss sicherlich die MyDialog.h mit in die Haupt.h includen.Wie gehe ich nun weiter vor?!
-
Die generierte .cpp File ist doch nicht zu beachten oder?
nicht für das erstellen der Variable mit der du den Dialog öffnen willst.
Ich muss sicherlich die MyDialog.h mit in die Haupt.h includen.
ja
Wie gehe ich nun weiter vor?!
jetzt aber ganz schnell hoch zur 1 post von Barados und meiner wenigkeit und lesen...
-
"Haupt.h"? Sehe ich jetzt nicht, du meinst wohl in die "EinfachesFenster.cpp"? Dort einfach ein #include hinzufügen:
EinfachesFenster.cpp:
#include "EinfachesFenster.h" #include "MyDialog.h" CMyApplication MyApp; //Ein Objekt der abgeleiteten Anwendungsklasse erzeugen CMyWindow::CMyWindow() { m_brushMyBackground.CreateHatchBrush( HS_CROSS, RGB( 240, 240, 240 ) ); CString strWndClass = AfxRegisterWndClass ( CS_HREDRAW | CS_VREDRAW, MyApp.LoadStandardCursor( IDC_ARROW ), m_brushMyBackground, MyApp.LoadIcon( IDI_ICON1 ) //eigenes Icon eingebunden ansonsten: MyApp.LoadStandardIcon( IDI_WINLOGO ) ); Create( strWndClass, _T("Mein erstes MFC Fenster") ); } //usw...Verwendung dann in z.B. CMyWindow::OnRButtonDown wie schon oben geschrieben...
MfG,
Probe-Nutzer
-
Was für ein Datentyp nehme ich denn?
Wenn ich eine (Member)Variabel deklariere, muss ich ja auch den Typ angeben.
-
Ah nun habe ich es!
VIELEN DANK! Das war ein Spitze Support von Euch..
Schönen Abend noch.
-
na deinen klassennamen
MyDialog m_MyDlg;//<- that's it[NEW EDIT]

-
@rT!f@Ct schrieb:
na deinen klassennamen
MyDialog m_MyDlg;//<- that's it[NEW EDIT]

Habs nun direkt in der Schleife deklariert:
void CMyWindow::OnRButtonDown(UINT nFlags, CPoint point) { MyDialog dlg1; dlg1.DoModal(); }Funktioniret aber auch.
Denn wenn ich es in der MyDialog.h deklarieren will, meckert er rum:http://img202.imageshack.us/img202/6641/sreen.jpg
aber naja es klappt ja nun
-
Denn wenn ich es in der MyDialog.h deklarieren will, meckert er rum:
<-(wie viele davon soll ich jetzt hier hin machen?)nicht in der MyDialog.h ne membervariable von sich selbst deklarieren
sondern in der MyWindow.h
-
class MyDialog: { public: MyDialog m_Dlg1 };So meinst du oder?
Also in der EinfachesFenster.h
-
in die Headerdatei in der die Klasse CMyWindow erstellt wird
-
wie kommst du eigentlich zu dem doch eher anspruchsvollen visual studio standard(+) ?
MfG
-
@rT!f@Ct schrieb:
in die Headerdatei in der die Klasse CMyWindow erstellt wird
Geht nicht.
Ist meine deklaration auch richtig?
-
weis nicht mehr was ich dir noch schreiben könnte damit du es verstehst.
du willst es in der datei ansprechen in dervoid OnRButtonDown(UINT nFlags, CPoint point)deklariert ist, damit du es in der funktion ansprechen kannst.
und eben in diese headerdatei wo OnRButtonDown deklariert ist must du die MyDialog.h includen und in der Klassen von OnRButtonDown die membervariable (MyDialog m_Dlg1;)erstellen.
ansonsten bin ich jetzt am ende meines lateins...

-
warum fängst du eigentlich mit MFC an, wenn du noch garkeine Ahnung von C oder C++ hast?
du benötigst erstmal grundwissen über die Struktur und den Ablauf eines normalen C Programmes um sowas machen zu können, sonst wird das nur rumgeschuster...
Hol dir mal ein Einsteigerbuch und fang mit ner einfachen IDE und einfachen Programmen an.
MfG

-
Barados schrieb:
Hol dir mal ein Einsteigerbuch und fang mit ner einfachen IDE und einfachen Programmen an.
und in so einem buch ist auch spätestens ab dem 3 kapitel drann, wie man klassen untereinander bekannt macht, verbindet und übern Butten ein Dialogfeld öffnet.