Mehrere gleiche Dialogfelder erzeugen



  • Hallo, wiedermal ich...

    Ich bin jetzt schon ne ganze Weile am suchen, bin mir aber überhaupt nicht schlüssig, ob das geht...(Warscheinlich nicht, aber fragen kann man ja mal)

    Ich muss in meiner APP mehrere Dialogfelder individuell bedienen können. Nur ist es so, dass die Dialogfelder alle gleich aussehen und auch in etwa das gleiche machen.
    Daten einer Seriellen Schnittstelle empfangen und auswerten....
    Muss ich jetzt für jedes Dialogfeld welches ich auf die Oberfläche platziere, eine eigene Klasse anlegen und diese dann jeweils mit demselben Code füttern? Oder geht das auch anders? 😕

    Danke und Gruss

    Danny



  • Du könntest mit CWnd::Create neue Fenster erstellen !
    Mach dich mal am besten in der MSDN schlau.

    Gruß
    :: NoName ::



  • Hallo

    Danke für den Tip..

    Ich habe versucht einen neuen Dialog zu erzeugen, bis jetzt hats noch nicht geklappt, aber ich arbeite daran... 😉

    Mit der einen Create Methode müsste ich ja jedes Fenster neu zeichnen, ist es nicht möglich, eine neue Dialogressource anzulegen und dann anschliessend mit Create zum leben zu erwecken, indem man einfach die Ressource übergibt?

    Ich habe das versucht, kriege aber nen Fehler...Beispiel:

    CDialogKlasse *CDKlasse = new CDialogKlasse();
    	CDKlasse->Create(IDD_DIALOG1);
    	CDKlasse->ShowWindow(SW_SHOW);
    

    Warum geht das so nicht (ähnlich wie bei einem nichtmodalen Dialog)?

    Grüsse

    Danny



  • Hallo, nochmals ich...

    Ich habe es jetzt in einer MDI Anwendung mal testweise versucht und da gehts so wie ich oben beschrieben habe...Das liegt in diesem Fall daran, das ich mich momentan in einer SDI Anwendung befinde...Ich müsste demnach das Projekt abändern, oder geht es auch anders?

    Was mir jedoch noch nicht klar ist: Ich habe jetzt bei der MDI Anwendung zwei Dialogfelder, eines mit Code und ein zweites, da hab ich nur die Ressource erstellt, aber genau gleich wie beim ersten...

    Ich wollte nun versuchen, beim Starten der jeweiligen Fenster einer in der Klasse als Public deklarierten Variable jeweils einen anderen Wert zuzuweisen..Funktioniert aber nicht! Sollte doch gehen, da ich jetzt zwei Instanzen habe und jeder Instanz sollte ich doch jetzt indivduell Werte zuweisen können?

    Beispiel:

    m_hv = new CDlgTest;
    	m_hv->Create(IDD_DIALOG1);
    	m_hv->m_itest=34;
    	m_hv->ShowWindow(SW_SHOW);
    
    	m_dlgx = new CDlgTest;
    	m_dlgx->Create(IDD_DIALOG2);
    	m_hv->m_itest=0;
    	m_dlgx->ShowWindow(SW_SHOW);
    

    Oder liege ich da völlig falsch?

    Grüsse

    Danny



  • Sorry, habe leider noch nie eine Variable einem mit Create erstellten Fenster übergeben. Hast du schonml im Board gesucht ? Vielleicht wirst du dort fündig !?

    Gruß
    :: NoName ::



  • Ja, habe aber auch nichts gefunden...

    Aber ich weiss, wo der Fehler liegt:
    Hatte heute morgen wohl noch n Brett vor dem Kopf oder nur ein Auge auf...:

    m_hv = new CDlgTest;
        m_hv->Create(IDD_DIALOG1);
        [b]m_hv->m_itest=34;[/b]
        m_hv->ShowWindow(SW_SHOW);
    
        m_dlgx = new CDlgTest;
        m_dlgx->Create(IDD_DIALOG2);
        [b]m_hv->m_itest=0;[/b]
        m_dlgx->ShowWindow(SW_SHOW);
    

    lol 🤡

    Das geht dann eindeutig nicht so....
    Aber wenn ich das ganze ändere, dann läuft's... 😃
    Das mit den Variablen übergeben klappt wunderbar, als Public deklariert...
    So bin ich doch meinem Ziel ein Stückchen näher gekommen...

    @:: NoName :: Danke für die Inputs...

    Grüsse

    Danny



  • Hallo!

    Ich habe da noch was: Wenn ich für jede Dialogbox, die ich starte Nachrichten zuordne, krieg ich momentan einen Fehler. Muss ich demnach jede Dialogbox, welche ich kreiere in einem separaten Thread laufen lassen? Jeder Thread müsste ja eine eigene Warteschlange für einkommende Nachrichten besitzen, oder?

    Gruss Danny


Anmelden zum Antworten