SDI Programmablauf / Dialoge dynamisch erzeugen



  • 1. In welcher Reihenfolge werden die vorgefertigten SDI-Methoden (und vorallem in welche Klassen) in einer SDI-Anwendung mit Doc/View-Struktur aufgerufen, wenn ein neues Projekt erzeugt wird und ausgeführt wird?

    Also ich blick noch nicht ganz durch wo der Einsprung in der SDI-Anwendung ist (CMainFrame oder CProjectApp?).

    2. Wenn ich nun neue Dialoge für das projekt erstellt habe und diese dynamisch (also zur Laufzeit in dem Programm) erzeugen und z.B. nach dem Initialisieren des Programms anzeigen möchte, wo (also in welcher Klasse/methode) und wie binde ich diese in einer SDI-Anwendung ein.

    PS: Entschuldigung meine Unsachkundigkeit, aber ich bin gerade am umsteigen von delphi/pascal auf eVC++ und bin auf diesem Gebiet, was die Syntax/Struktur VC++ anbelangt, noch nicht ganz bewandert.



  • Rio1 schrieb:

    1. In welcher Reihenfolge werden die vorgefertigten SDI-Methoden (und vorallem in welche Klassen) in einer SDI-Anwendung mit Doc/View-Struktur aufgerufen, wenn ein neues Projekt erzeugt wird und ausgeführt wird?

    Also ich blick noch nicht ganz durch wo der Einsprung in der SDI-Anwendung ist (CMainFrame oder CProjectApp?).

    In der App. InitInstance, um genau zu sein. 🙂

    2. Wenn ich nun neue Dialoge für das projekt erstellt habe und diese dynamisch (also zur Laufzeit in dem Programm) erzeugen und z.B. nach dem Initialisieren des Programms anzeigen möchte, wo (also in welcher Klasse/methode) und wie binde ich diese in einer SDI-Anwendung ein.

    PS: Entschuldigung meine Unsachkundigkeit, aber ich bin gerade am umsteigen von delphi/pascal auf eVC++ und bin auf diesem Gebiet, was die Syntax/Struktur VC++ anbelangt, noch nicht ganz bewandert.

    Wo du was aufrufst, hängt davon ab, wann du das sehen willst. 😉



  • ja zum beispiel nach dem fertigen initialisieren. in welcher klasse kann ich dynamische dialoge erzeugen und wie muss die syntax aussehen, damit diese zur laufzeit erzeugt werden?

    also von der logik sollte das ungefähr so ablaufen:

    m_dlg = new DIALOG // erstellen und anzeigen
    show
    ..
    ..
    delete m_dlg // zum beispiel bei abbr. / beend.



  • Du kannst einen Dialog überall erzeugen, wo du ihn brauchst - du mußt ihn nur wiederfinden. (und es ist durchaus nicht unüblich, kleinere Dialoge lokal in einer Nachrichtenbehandlungsroutine zu definieren - z.B. die OnSave()-Methode erzeugt sich einen CFileDialog, um den Namen der zu speichernden Datei abzufragen)

    Dialoge werden mit DoModal() (modaler Dialog - die Applikation wartet, bis er fertig ist) bzw. Create() (nichtmodaler Dialog - die Applikation kann nebenher weiterarbeiten) gestartet und per EndDialog() (von innen) oder DestroyWindow() (von außen, nur für nichtmodale Dialoge notwendig) wieder beendet.



  • ich mach mal nen neuen thread zu CFormView auf, angelehnt an die Problematik


Anmelden zum Antworten