Comroader Geschrieben 14. Februar 2002 Geschrieben 14. Februar 2002 Hallo, Kennt von euch jemand eine Möglichkeit auf den Wert einer Variable in der Funktion OnInitDialog in einem anderem Dialog zuzugreifen ??? Bitte um schnelle Hilfe !!!! PS: Verwende die MFC. Thanks for your help.
Cleo Geschrieben 14. Februar 2002 Geschrieben 14. Februar 2002 mach ne globale variable wenn du den wert vorher schon kennst. andere möglichkeit fällt mir auch nicht ein. na doch vielleicht die variable als puplic deklarieren.
Comroader Geschrieben 14. Februar 2002 Autor Geschrieben 14. Februar 2002 Eine globale Variable nützt mir recht wenig, da ich auf Sie im anderen Dialog nicht zugreifen kann.
Crush Geschrieben 14. Februar 2002 Geschrieben 14. Februar 2002 Verpaß dem Dialog eine öffentliche Funktion, die den Wert der Variablen zurückgibt und leg das Dialogobjekt global an. Bestimmt könnte man noch irgendwie über die Message-Queue die Inhalte an den anderen Dialog weiterreichen. Hab ich aber selber noch nicht gemacht. Besonders elegant wäre eine eigene Message-Klasse und von dieser leitet man dann beide Dialoge ab, welche dann sich gegenseitig Messages direkt verschicken könnten.
Comroader Geschrieben 15. Februar 2002 Autor Geschrieben 15. Februar 2002 Wenn ich eine öffentliche Funktion in der Klasse anlege und diese in der OnInitDialog aufrufe bekomme ich einen Speicherfehler. Was meinst du eigentlich damit das Dialogobjekt global anzulegen ???
hoagi Geschrieben 15. Februar 2002 Geschrieben 15. Februar 2002 Hi, um wirklich eine gue Lösung für dein Problem zu geben, gibst du zuwenig Informationen. Wofür brauchst du diesen Wert? Aber es gib mehere Möglichkeiten. z.B.: Erstelle eine neue Klasse, abgeleitet von CDialog und füge ein statische Variable in die Klasse ein , die du entweder public machst oder über eine statische public-Funktion von aussen zugängig machst. Oder du fügst in die Klasse einen Konstruktor ein mit dem du den Wert der Variable setzt. Du kannst natürlich einfach auch den Wert einer nichtstatitschen Variable setzen nach Aufruf des Konstruktors und vor dem Aufruf DoModal() z.b: pDlg = new CMyDialog; pDlg->SetzeWert( irgendwas ); pDlg->DoModal(); Vielleicht stellst du einfach den Code, der bei dir den Speicherfehler erzeugt hier ins Board.
Crush Geschrieben 15. Februar 2002 Geschrieben 15. Februar 2002 In der WinAPP den Dialog erzeugen und er ist global im Programm bekannt. Man könnte auch ein Dialog-Array erzeugen und mit Dialogen füllen. So weiß man wieviele Dialoge existieren und alle haben die Möglichkeit sich abzufragen. Oder aber: Mit Findwindow() sollte der eine Dialog von dem anderen einen Window-Handle bekommen, über den er dessen Funktionen abrufen kann-> der Dialogname muß eindeutig sein (z.B. durchnumeriert).
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden