Verständnissproblem mit enum und Append
-
Hi Leute
aus dem Buch C++ von A bis Z habe ich folgenden Ausschnit:
Headerdatei:... class BasicFrame : public wxFrame { private: wxPanel* panel; wxButton* button; wxMenuBar *MenuBar; wxMenu *InfoMenu; enum { MENU_INFO_ABOUT }; // Ereignis-Tabelle einrichten DECLARE_EVENT_TABLE() public: ...
Quelldatei:
BasicFrame::BasicFrame ( ... // Eine Menübar erzeugen MenuBar = new wxMenuBar(); // Eine Menü erzeugen InfoMenu = new wxMenu(); InfoMenu->Append(MENU_INFO_ABOUT, wxT("&About") ); MenuBar->Append( InfoMenu, wxT("&Info") ); SetMenuBar(MenuBar); // Eine einfache Statusbar erstellen CreateStatusBar(1); } BasicFrame::~BasicFrame() { } // Ereignis-Tabelle BEGIN_EVENT_TABLE(BasicFrame, wxFrame) EVT_BUTTON(wxID_OK, BasicFrame::OnClickButtonOK) EVT_MENU(MENU_INFO_ABOUT, BasicFrame::OnMenuInfoAbout) EVT_SIZE(BasicFrame::OnSize) END_EVENT_TABLE()
Jetzt meine Fragen:
Was bewierkt diese enum definition?
Und was ist Append (InfoMenu->Append(MENU_INFO_ABOUT, wxT("&About") );) bzw. was bewierkt es?
Danke
-
Das enum ist in diesem Fall guter Stil, denn es stellt nichts anderes als einen integer Wert und damit die Menü ID da. Nutzt du das enum konsequent verhinderst du damit, dass du ID's versehentlich doppelt verwendest, und erhöhrt die lesbarkeit deines Codes. Hier könnte aber genauso gut 4711 sein.
Append auf dem Menü fügt diesen Eintrag in dem Menü hinzu. In diesem Fall also den "About" Eintrag.
Ich hoffe das hilft.
-
Ja ok vielen Dank
-
Wie läuft das aber genau bei dem enum Wert ab? Warum kann man den so nicht doppelt verwenden?