c++.net Vollbildmodus
-
hallo zusammen,
ich habe mit c++.net ein windows forms projekt geschrieben.
die oberfläche meiner hauptmaske soll als grundlage für ein touchscreen
fungieren. nun meine frage: wie kann ich einen echten vollbildmodus gelangen??
soll heissen ohne Hauptmenu und auch ohne windowsleiste mit minimieren, maximieren und schliessen, VOLLBILD eben??im voraus vielen dank für eure mühe
shogula
-
FormBorderStyle auf None und WindowState auf Maximized einstellen
-
ich habe aber ein hauptmenu (Datei, Einstellungen, Hilfe). das ist dann immernoch sichtbar. ausserdem muss ich die möglichkeit haben bei laufendem programm die menuleiste ein bzw auszublenden, fals man dort einstellungen ändern will....
-
menu ausblenden => löschen
menu einblenden => neu erstllen
-
das bräuchte ich etwas genauer...bin noch ziemlicher änfänger...
.net legt ja das hauptmenu mit dem designer an und da steht überall : an vom designer erstellten objekten soll man nicht rumfummeln...konkret, wie kann ich in einer funktion onClick() das menu ein bzw.ausblenden, wie spreche ich es an (geht nicht auch show() und hide()??)
habe mal nachfolgend alle code segmente rauskopiert in denen etwas mit dem mainmune1 gemacht wird, vielleicht hift das (zuerst dir - und dann auch mir)
private: System::Windows::Forms::MainMenu * mainMenu1;
void InitializeComponent(void)
{
.
.
.
this->mainMenu1 = new System::Windows::Forms::MainMenu();
.
.
.
//
// mainMenu1
//System::Windows::Forms::MenuItem* __mcTemp__1[] = new System::Windows::Forms::MenuItem*[3];
__mcTemp__1[0] = this->menuItem1;
__mcTemp__1[1] = this->menuItem2;
__mcTemp__1[2] = this->menuItem3;
this->mainMenu1->MenuItems->AddRange(__mcTemp__1);
this->mainMenu1->RightToLeft = System::Windows::Forms::RightToLeft::No;
.
.
.
//
// Form1 // dieses formular ist die hauptmaske
//
.
.
.
this->Menu = this->mainMenu1;
.
.}
-
Also, das Einfachste wäre:
1. du erstellst mit Hilfe des Designers ein Menu. so wie du es haben willst, mit alle Menupunkten, Ereignissen, etc.
2. Alles, was Designer in die InitializeComponent Methode bezüglich Menu gepackt hat, kopierst du in eine neue Methode namens, sagen wir, CreateNewMenu.
3. dann legst du fest, bei welchen Ereignissen dein Menu erscheint bzw. verschwindet. Ich habe dafür MouseDown der Form missbraucht. Linke Taste => erscheinen, Rechte => verschwinden.
4. in den festgelegten ereignissen schreibst du code um menu verschwinden zu lassen (Dispose()) und wieder neu zu erstellen(CreateNewMenu())
s. Beischpiel:// Menu verschwinden bzw. wieder erscheinen lassen private: System::Void Form1_MouseDown(System::Object * sender, System::Windows::Forms::MouseEventArgs * e) { if (e->Button == MouseButtons::Right) // verschwinden { if (this->Menu != NULL) { this->Menu->Dispose(); this->Menu = NULL; } } if (e->Button == MouseButtons::Left) // erscheinen { if (this->Menu == NULL) { CreateNewMenu(); } } } // menu neu erstellen (erscheinen) private: void CreateNewMenu() { this->mainMenu1 = new System::Windows::Forms::MainMenu(); this->menuItem1 = new System::Windows::Forms::MenuItem(); this->menuItem2 = new System::Windows::Forms::MenuItem(); // // mainMenu1 // System::Windows::Forms::MenuItem* __mcTemp__1[] = new System::Windows::Forms::MenuItem*[1]; __mcTemp__1[0] = this->menuItem1; this->mainMenu1->MenuItems->AddRange(__mcTemp__1); // // menuItem1 // this->menuItem1->Index = 0; System::Windows::Forms::MenuItem* __mcTemp__2[] = new System::Windows::Forms::MenuItem*[1]; __mcTemp__2[0] = this->menuItem2; this->menuItem1->MenuItems->AddRange(__mcTemp__2); this->menuItem1->Text = S"Datei"; // // menuItem2 // this->menuItem2->Index = 0; this->menuItem2->Text = S"Close"; this->menuItem2->Click += new System::EventHandler(this, menuItem2_Click); // // Form1 // this->Menu = this->mainMenu1; }
-
hat mir sehr geholfen.
gibt es auch eine möglichkeit diese Funktion über eine Tastenkombination zu aktivieren bzw. zu deaktivieren??
gruss
-
Prinzip ist genau das Selbe nur mit Tasten.
einziges was zu berücksichtigen ist, dass die KeyPreview des Formulares auf true gesetzt ist.
private: System::Void Form1_KeyDown(System::Object * sender, System::Windows::Forms::KeyEventArgs * e) { // mit CTRL+H Menu ausblenden (Hide) if (e->KeyCode == System::Windows::Forms::Keys::H && e->Control) { if (this->Menu != NULL) { this->Menu->Dispose(); this->Menu = NULL; } } // mit CTRL+V Menu einblenden (Visible) if (e->KeyCode == System::Windows::Forms::Keys::V && e->Control) { if (this->Menu == NULL) { CreateNewMenu(); } } }
-
hast was gut bei mir!!
-
ich komme drauf zurück!