Nicht Modaler Dialog

Sebastian Hanke

Grünschnabel
Kann mir jemand verraten, wie ich Daten (z.B.: Stings oder einfach nur int Zahlen) von meinem Hauptdialogfeld während der Laufzeit in das Nicht Modale Dialogfeld transferiere?

Das Einzige was ich hinbekommen habe, ist das sich das Nicht Modale Dialogfeld öffnet. Es werden auch alle Steuerelemente dort angezeigt. Aber leider bekomme ich weder Daten aus dem n.m.Df. ins Hauptdilogfeld oder umgekehrt.
Langsam verzweifle ich. Hab schon drei Tage im Inet gesucht. Leider ohne Ergebnis.

Danke im Voraus.
Mfg, Sebastian
 
Gib deiner Dialogklasse eine Funktion, mit der sein Zustand von aussen geändert werden kann.

Beispiel:
Datei DeinDialog.h
Code:
class CDeinDialog : public CDialog...
{
... Blabla


private:
  int IrgendeinWert;

public:
 
  void SetzeWert( int wert ) 
  {
    // Hier irgendwas tun
    IrgendeinWert = wert;
  }
  
  int HoleWert() const
  {
    // Wert zurückgeben
    return IrgendeinWert;
  }
};

Wie die Funktionen aussehen, weisst du vermutlich besser, aber dort kannst du jedenfalls tun, was zur Änderung der Controls usw. nötig ist. Ich würde allerdings die Definition in die DeinDialog.cpp tun.

An anderer Stelle kannst du nun diese Funktionen nutzen, wenn du 1. die DeinDialog.h includest und 2. einen pointer auf deinen nichtmodalen Dialog hast.

Nur ein kurzes Beispiel:
Datei WichtigesAnderesFenster.cpp
Code:
...
#include "DeinDialog.h"
...

CDeinDialog* pDerDialog = 0;
...

void Init()
{
  ...
  pDerDialog = EineFunktionDieEinenCDeinDialogErzeugt();
  ...
}

...

void TuWas()
{
  if ( pDialog != NULL )
  {
    // Etwas mit dem Dialog tun
    int Zahl = pDerDialog->HoleWert();
    pDerDialog->SetzeWert( 4711 );
  }
}

...

void Aufraeumen()
{
  EineFunktionDieEinenCDeinDialogFreigibt( pDerDialog );
}

Vielleicht hilft dir das kurze Beispiel ja weiter.
 

Neue Beiträge

Zurück