[VC++ 2005] MenuBar in neues Fenster übernehmen

blotte

Mitglied
Hallo Zusammen!

Ich habe unter VC++ 2005 mit WindowsForms mehrere Fenster erstellt und miteinander verlin kt.
Unter anderem habe ich in meinem StartFenster eine MenuBar bzw StripMenu mit den Punkten "Datei" , "Hilfe" usw...
Ist es möglich diese in darauffolgende Fenster zu übernehmen? ich halte es nämlich nicht für sehr sinnvoll wenn ich diese jedesmal neu erstelle.

Vielen Dank im Voraus
Caro
 
Mir fallen da folgende Möglichkeiten ein (wobei ich aber nicht weiß, ob die auch wirklich alle mit VS 2005 realisierbar sind):

1. Aus der Anwendung eine MDI-Anwendung machen. Dann hast du Menu, ToolButtons und StatusBar für alle Fenster.
2. Im Hauptfenster einen ActionManager verwenden (sofern in der MFC etwas Vergleichbares existiert). Dann musst du in den Folgefenstern nicht alles komplett neu definieren sondern nur entsprechende Menus auf die Aktionen des Hauptfensters verweisen.
3. (So habe ich das das erste Mal gemacht) Wirklich die Menus, Toolbuttons etc. in den anderen Fenstern nachbauen.
 
Hi!

Caro, erzähl uns doch mal was Du machen möchtest.
Es ist ergonomisch gesehen nicht vorteilhaft eine Anwendung mit mehreren Fenstern als SDI Anwendung anzubieten.
Günstiger währe in dem Fall eine Anwendung als MDI, wie CSANecromancer schon gesagt hat.
Es ist zudem nicht möglich, ein Control gleichzeitig auf unterschiedlichen Forms anzuzeigen.
Daher müsstest, wenn Du die Anwendung zwingend als SDI machen sollst, alle Menuelemente Doppelt anlegen.
Du kannst die Methoden der Ereignissbehandlungen in deinem MainForm dann aber immer noch als public definieren
und die Click-Ereignisse der Menuelemente dann damit verknüpfen.

Anonsten kannst Dir ja mal mein MDI Tutorial anschauen. Dort siehst eine Möglichkeit,
wie man MDI Anwendungen bequem verwalten und Basisfunktionalitäten einpflegen kann.
[thread=252200]C# Verwaltung von Multi Document Interfaces (MDI)[/thread]
 
Also eigentlich ist ausreichend wenn ich mit SDI arbeite...

...ich glaube , ich hätte auch probleme alles um zu schreiben, weil wir von der uni aus auch nur mit dem einfachen winforms-assistenten arbeiten.
ich bin also in diesem gebiet nicht alzu bewandert.

ich werde es jetzt erstmal mit einer public-methode zu machen...
reicht es da aus die methode folgender maßen zu schreiben?

Code:
void neuesFester( )  {
			 newScreen = gcnew frmScreen();
			 newScreen->ShowDialog(this);
}


oder kann man "einfach" aus den ganzen private sachen public machen?
Code:
private: System::Windows::Forms::MenuStrip^  menuStrip1;
wie gesagt, das is halt automatisch generierter code


MfG Caro
 
Zuletzt bearbeitet:
Btw: Ich kann cpp nur ein klein wenig :-( Mach ausschließlich C# ;-) und ein bissel VB

Ich meinte Du musst die Methoden als public definieren, die das Click-Ereigniss behandeln.
Im Konstruktor der anderen Fenster, verknüpfst dann die Click-Ereignisse der Menuenlemente mit den entsprechenden Methoden.
Musst natürlich noch für den Zugriff auf dein HauptFenster, bzw. auf die Klasse die die Methoden bereit stellt, sorgen.
Du kannst dein Hauptfenster mittels des Singleton Patterns ([post=1296048]Beispiel[/post]) verfügbar machen
oder dem Konstruktor eine Referenz (bei euch heisst das Zeiger) auf dein HauptFenster übergeben.
 

Neue Beiträge

Zurück