Wie zur Hölle zweites Form öffnen? Thread?



  • Mei, des kann doch ned so schwer sein! Ich hab hier unmengen an Materialien, Tutorials, Bücher und Auschnitte aus der Hilfe, aber nichts davon funktioniert. ich will doch einfach nur ein zweites Form aus dem gleichen projekt starten/Anzeigen und das gut handeln können. Wo ist das Problem?
    Habt ihr noch gute Tutorials? Gibt es eine Schritt für Schrott Anleitung für VC++ 2005 wie man einfach ein zweites Form einblendet. Hiielfe! Bitte! Ich verzweifle... 😞



  • Ein zusätzliches? Da brauchst du bestimmt ein MDI. Hast du schon bei Codeproject.com geschaut? 🙂
    Für "ein anderes" gibts ne Anleitung in der FAQ.



  • 1. Neue Klasse (Windows Forms) hinzufügen, z.B. Form2

    2. Im Hauptfenster, üblicherweise Form1, direkt unter #pragma once einbinden,
    #include "Form2.h"

    3. Doppelklick auf Form1 (im Designer-Modus)

    4. in der Form1_Load Methode eintragen:
    Form2^ formneu = gcnew Form2();
    formneu->Show();

    5. und fertig.

    Viele Grüsse,
    Bra



  • JAWOLL! Grad hab ich das Fenster aufgemacht, da les ich deine Nachricht und es funktioniert!
    Genau so hab ich mir das von der Logik her auch gedacht und ich war schon nah dran. Warum, steht das nichtmal in der Hilfe so? Ich hab bestimmt über einhundert Artikel gelesen und nirgends stand das so drin? JIPPIEE, es funktioniert! 😃 Danke! 👍



  • Dieser Thread wurde von Moderator/in estartu aus dem Forum MFC (Visual C++) in das Forum C++/CLI mit .NET verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Ich hätte noch eine Frage zu Anwendungen mit mehreren Fenstern, und zwar:
    Wenn ich ein Fenster aus dem anderen heraus öffne, wie kann ich dem neuen Fenster zwingend den Fokus erteilen? Also so, daß das ursprüngliche Fenster nicht angewählt werden kann und wirklich ruht, bis der neue Dialog geschlossen wird. Welche Variablen muss ich dafür setzen und welche Signale muss ich abfangen, um zu erfahren, daß das neue Fenster geschlossen wurde und ich das alte wieder freigeben muss?

    Bis dann denn!

    McTrevor



  • Ähhh... fragen wir mal so: Wie machst Du es denn jetzt???
    Normalerweise macht man es so:

    Form2^ formneu = gcnew Form2(); 
    formneu->ShowDialog(this);
    


  • Bis jetzt mache ich es genauso wie beschrieben. Das neue Fenster ist zwar schön über dem alten, aber das alte kann ich trotzdem anwählen (auch wenn es im Hintergrund bleibt) und noch Änderungen drin vornehmen. Insbesondere kann ich den Button, mit dem ich das neue Fenster erzeugt habe, erneut drücken und so mehrere Instanzen davon erstellen, was je nach Anwendung natürlich katastrophale Folgen haben kann.

    Bis dann denn!

    McTrevor



  • Du erzeugst bisher einen "Modalless-Dialog" was Du gar nicht willst... deshalb "ShowDialog" anstelle von "Show"...



  • Ah vielen Dank. Das kann natürlich sein! Werd´s gleich mal ausprobieren. Wie lange bringt man zu, bis man derart auf Draht ist in dem Thema wie Du?

    Bis dann denn!

    McTrevor



  • Soll ich mich jetzt selber Loben !? 🕶

    https://mvp.support.microsoft.com/default.aspx/profile=EE63B639-568B-452F-927E-EABE4F5B9CF5

    (Und "NEIN" ich bin kein MS Mitarbeiter!)



  • Olala, das erklärt einiges... Naja ich programmiere gerade quasi das erstemal freiwillig für den privaten Gebrauch. Für die Uni (Informatik) musste ich mir ja schon das ein oder andere beibringen, aber ich habe mich da immer nur auf das nötigste beschränkt. Ich werde also noch viele Jahre brauchen, bis ich ein halbwegs brauchbarer Programmierer bin... Bin halt eher ein Theoretiker.

    Bis dann denn!

    McTrevor



  • Habe mal wieder ein Problem, aus dem ich nicht schlau werde. Ich möchte bei einem normalen Button unterscheiden, ob er mit links oder rechts geklickt wurde. habe den Button also nicht für das normale Click-Event angemeldet sondern für das Mausklickevent angemeldet. Trotzdem wird die als Eventhandler verknüpfte Funktion nur bei einem Linksklick aufgerufen. Rechtsklicks werden leider ignoriert. Kann ich den normalen Button doch noch irgendwie dazu bringen bei Links und bei Rechtsklick zu reagieren, ohne mir jetzt eine eigene Klasse von Button abzuleiten? Ich vermute es gibt einfach nur eine boolsche Variable die, ich nur nicht gefundn habe, die ich setzen muss.

    Bis dann denn!

    McTrevor



  • Hmmm.... ein Button ist eigentlich dafür da, dass er (mit der linken Maustaste) gedrückt wird oder auch z.B. mit der Tastatur (Space).
    Einen Klick wirst Du AFAIK somit nur so bekommen...

    Wenn Du trotzdem die rechte Maustaste mitbekommen willst, kannst Du das "MouseUp"-Event abfragen...



  • Um wirklich einen Rechtsklick zu bekommen, müsste ich ja dann erstmal das Mousedown abfangen, einen Bool setzen, und dann beim Mouseup den Bool abfragen. Wenn ich nur beim Mouseup nachfrage, kann man auch einfach mit gedrückter rechter Maustaste den Zeiger auf den Button bringen und dann loslassen.

    Und wenn ich es mit dem MouseUp und dem MouseDown mache muss ich auch noch das Leave-Ereignis abfangen, damit der Bool zurückgesetzt wird, wenn man nach dem Drücken die Maus noch wegzieht, bevor man losläßt. Wenn ich den Spaß dann auch noch mit mehreren Buttons machen will, wirds ganz eklig (auch wenn ich insgesamt mit nur einem Bool hinkomme, muss ich für jeden Knopf drei Eventhandler implementieren).

    Ein weiteres Problem kosmetischer Natur wäre aber auch die fehlende Animation des Button-Klicks. Habe leider noch nichts gefunden, womit man den Button nur "optisch" drücken kann.

    Ich kann doch nicht der erste Mensch sein, der auf die Idee kommt, einen Button doppelt zu verwenden und die ausgewählte Aktion von der Maustaste abhängig zu machen? 😕

    Und wo bitte liegt der Sinn darin bei Buttons das MouseUp und MouseDown Ereignis für die rechte Maustaste zuzulassen, aber das MouseClick Ereignis nicht? das ist doch absolut inkonsequent. Zumal es bei anderen Controlelementen ja geht.

    Bis dann denn!

    McTrevor


Log in to reply