Wenn du hier neu bist, kannst du zu unserer RSS Zufuhr, sowie unterzeichnen wünschen zu unserem Rundschreiben (auf oberem rechtem Menü) zum der in hohem Grade informativen Artikel… und des NR. nie wöchentlich zu erhalten, wir Spam!
wxWidgets ist ein geöffneter Quellc$kreuzplattform C++ programmierentoolkit, der viele Eigenschaften einschließt. Er ist für sich entwickelnde Anwendungen mit einem GUI häufig am benutztesten, aber stellt auch Eigenschaften für Netzwerkanschluß, Akte Zugang und mehr zur Verfügung. Mit den Versionen, die für Windows, Linux, Mac und sogar einige eingebettete Vorrichtungen vorhanden sind, wird die Kreuzplattformprogrammierung viel einfacher.
Ich bin, sehr neu selbst zu den wxWidgets aber noch habe hinunter die Anfänger eingesperrt, die auf wxWidgets Tutor sind -
Während dieses Tutorial wird ein sehr einfacher Textherausgeber konstruiert, der Textakten laden und speichern kann. Der Tutorial konzentriert auf den Anwendung Gegenstand, das Hauptfenster und die Falltabelle.
Die Anwendung
Alle wxWidgets Anwendungen werden vom wxApp abgeleitet und müssen einfach ein einzelnes Mitglied, wxApp überlaufen:: OnInit und stellen ein Fenster her. Solange das Fenster geöffnet ist, ist die Anwendung außerdem. Der folgende Code veranschaulicht den benötigten Code.
#include „wx/wx.h“ Kategorie MyApplication: allgemeines wxApp { öffentlichkeit: bool OnInit (); </code> }; bool MyApplication:: OnInit () { // TODO: Erscheinenfenster Rückholfalsches; } IMPLEMENT_APP (MyApplication);
Die erste Linie schließt die meisten Include-Dateien mit ein, die für eine wxWidgets Anwendung benötigt werden. Dann wird eine neue Kategorie von wxApp benanntem MyApplication und das MyApplication: abgeleitet: OnInit () Funktion wird verursacht. Schließlich ist IMPLEMENT_APP (MyApplication), erforderlich, die Anwendung zu veranlassen zu laufen. Dieses Makro erweitert zum korrekten Code, damit jede mögliche gegebene Plattform wirklich die Anwendung beginnt.
Das Feld in den wxWidgets
Nachdem er die Anwendung verursacht hat, muß der Fensterrahmen verursacht werden und Kontrollen müssen auf ihm verursacht werden. Der Rahmengegenstand ist vom wxFrame und, wie gezeigt unten abgeleitet, einige Funktionen und die Textsteuerung einschließt.
Kategorie MyFrame: allgemeines wxFrame { öffentlichkeit: MyFrame (); leeres OnNew (wxCommandEvent& evt); leeres OnOpen (wxCommandEvent& evt); leeres OnSave (wxCommandEvent& evt); privat: leeres CreateWidgets (); wxTextCtrl* m_text; }; MyFrame:: MyFrame (): wxFrame (NULL, wxID_ANY, wxT („Programmbeispiel“)) { CreateWidgets (); } leeres MyFrame:: OnNew (wxCommandEvent& WXUNUSED (evt)) { m_text-> Freier Raum (); } leeres MyFrame:: OnOpen (wxCommandEvent& WXUNUSED (evt)) { wxString Akte =:: wxFileSelector (wxT („geöffnete Akte“)); wenn (file.IsEmpty () == falsch) m_text-> LoadFile (Akte); } leeres MyFrame:: OnSave (wxCommandEvent& WXUNUSED (evt)) { wxString Akte =:: wxFileSelector (wxT („außer Akte“)); wenn (file.IsEmpty () == falsch) m_text-> SaveFile (Akte); } leeres MyFrame:: CreateWidgets () { // verursachen eine Textsteuerung m_text = neues wxTextCtrl (dieses, wxEmptyString wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_TAB | wxTE_PROCESS_ENTER | wxTE_MULTILINE); // verursachen Akte Menü wxMenu* fileMenu = neues wxMenu (); fileMenu-> Hinzufügen (wxID_NEW, wxT („neue Akte“)); fileMenu-> Hinzufügen (wxID_OPEN, wxT („geöffnete Akte“)); fileMenu-> Hinzufügen (wxID_SAVE, wxT („außer Akte“)); // stellen Menüstab her wxMenuBar* menuBar = neues wxMenuBar (); menuBar-> Hinzufügen (fileMenu, wxT („Akte“)); // stellte Menü ein SetMenuBar (menuBar); }
Der ganzer dieser Code stellt das Fenster her. Der Erbauer MyFrame:: MyFrame benennt das Elternteilerbauer wxFrame:: das wxFrame, zum des Rahmens zu verursachen und ihm eines Namens zu geben und dann es benennen CreateWidgets, um den Inhalt des Rahmens zu verursachen. Das MyFrame:: CreateWidgets Funktion stellt eine Textsteuerung und einen Menüstab her. Zusätzlich FunktionMyFrame:: OnNew, MyFrame:: OnOpen und MyFrame:: OnSave werden geöffneten freien Raum eingeführt, oder außer dem Text zum zu einer Akte. Auch beachten, daß Textkonstanten in wxT (...) umgeben werden. Da wxWidgets in Unicode außerdem kompilieren können, Textkonstanten aufwickelnd, wie dieses sicherstellen, daß sie sind, richtig erklären.
Die Fall Tabelle in den wxWidgets
Die Falltabelle wird benutzt, um Fälle von den Kontrollen, von den Menüs und von noch etwas auf den korrekten Funktionen zu verlegen, um die Fälle anzufassen. Ohne sie wurde diese Anwendung nicht lädt oder speichert den Text. Die folgenden änderungen sind erforderlich, die Falltabelle einzuführen.
Kategorie MyFrame: allgemeines wxFrame { … … DECLARE_EVENT_TABLE (); }; BEGIN_EVENT_TABLE (MyFrame, wxFrame) EVT_MENU (wxID_NEW, MyFrame:: OnNew) EVT_MENU (wxID_OPEN, MyFrame:: OnOpen) EVT_MENU (wxID_SAVE, MyFrame:: OnSave) END_EVENT_TABLE ()
Zuerst wird die Falltabelle für den Rahmen erklärt. Dann wird die Tabelle hergestellt, und das Fall Identifikation wxID_NEW, das wxID_OPEN und das wxID_SAVE werden benutzt, um die Funktionen MyFrame zu benennen:: OnNew, MyFrame:: OnOpen und MyFrame:: OnSave. Die Fälle, die durch die Menüs erzeugt werden, erhalten durch die korrekten Funktionen verarbeitet.
Zeigen des Rahmens
Nun da der Rahmen komplett ist, ist eine kleine änderung die Anwendung erforderlich. Sie muß den Fensterrahmen verursachen, ihn zeigen und ihn als das Anwendung Oberseite Fenster einstellen.
bool MyApplication:: OnInit () { // verursachen und zeigen den Rahmen MyFrame* Rahmen = neues MyFrame (); Rahmen-> Erscheinen (); SetTopWindow (Rahmen); Rückhol ausrichten; }
Der komplette Code
#include „wx/wx.h“/Hauptfensterrahmen Kategorie MyFrame: allgemeines wxFrame { öffentlichkeit: MyFrame (); leeres OnNew (wxCommandEvent& evt); leeres OnOpen (wxCommandEvent& evt); leeres OnSave (wxCommandEvent& evt); privat: leeres CreateWidgets (); wxTextCtrl* m_text; DECLARE_EVENT_TABLE(); }; MyFrame::MyFrame() : wxFrame(NULL, wxID_ANY, wxT("Sample Program")) { CreateWidgets(); } void MyFrame::OnNew(wxCommandEvent& WXUNUSED(evt)) { m_text->Clear(); } void MyFrame::OnOpen(wxCommandEvent& WXUNUSED(evt)) { wxString file = ::wxFileSelector(wxT("Open file")); if(file.IsEmpty() == false) m_text->LoadFile(file); } void MyFrame::OnSave(wxCommandEvent& WXUNUSED(evt)) { wxString file = ::wxFileSelector(wxT("Save file")); if(file.IsEmpty() == false) m_text->SaveFile(file); } void MyFrame::CreateWidgets() { // Create a text control m_text = new wxTextCtrl(this, ID_TEXTCTRL, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_TAB | wxTE_PROCESS_ENTER | wxTE_MULTILINE); // Create file menu wxMenu* fileMenu = new wxMenu(); fileMenu->Append(wxID_NEW, wxT("New File")); fileMenu->Append(wxID_OPEN, wxT("Open File")); fileMenu->Append(wxID_SAVE, wxT("Save File")); // Create menu bar wxMenuBar* menuBar = new wxMenuBar(); menuBar->Append(fileMenu, wxT("File")); // Set menu SetMenuBar(menuBar); } // Event table to route menu events to functions BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_MENU(wxID_NEW, MyFrame::OnNew) EVT_MENU(wxID_OPEN, MyFrame::OnOpen) EVT_MENU(wxID_SAVE, MyFrame::OnSave) END_EVENT_TABLE() // Application class MyApplication : public wxApp { public: bool OnInit(); }; bool MyApplication::OnInit() { // Create and show the frame MyFrame* frame = new MyFrame(); frame->Show(); SetTopWindow(frame); return true; } IMPLEMENT_APP(MyApplication);
Normally to write a cross-platform GUI application, separate code would be needed for each supported platform. For Windows, the code would use the Windows API or MFC. For Linux it would probably use GTK or QT, or directly use X11. wxWidgets allows a single code base to compile and work on multiple platforms with little to no changes in the code. In addition it provides a complete set of features for networking, file and database access, and much more. For any programmer, especially a programmer developing for different platforms, wxWidgets is surely a valuable toolkit.
I hope this tutorial on wxWidgets helps you in understanding what they are and how to do programming with them. For more info on them you can always check there Official website. All Non spam comments are as usual welcomed with open hands
I would love to know How did you find the article and your inputs to it.
Links you may find interesting -
- Highlight and show formatted C++, PHP, Perl, Ruby, Python, Java, HTML Code in Wordpress
- Comparison Of Linux GUI Toolkits - Which one Do you Want ?
- Tutorial for Dummies - How to install Ruby on Windows
- Beginners Tutorial on MinGW - Configuring a Programming Environment for MinGW/Msys
- Configure Eclipse for Python















August 1st, 2007 at 4:25 pm
I have formatted all the wxWidgets code with proper indentation to make it more readable now
August 1st, 2007 at 4:37 pm
[…] this plugin, I am also able to convert my ugly wxWidget tutorial page to much more good looking Share and Enjoy: These icons link to social bookmarking sites […]