Se você for novo aqui, você pode querer subscrever a nossa alimentação de RSS assim como a nosso boletim de notícias (no menu righthand superior) para começar nunca artigos altamente informative semanal… e NO., nós Spam!
os wxWidgets são um toolkit de programação aberto da cruz-plataforma C++ da fonte que inclua muitas características. É o mais usado frequentemente para aplicações tornando-se com um GUI, mas fornece também características para o trabalho em rede, o acesso da lima, e o mais. Com as versões disponíveis para Windows, Linux, Mac, e mesmo alguns dispositivos encaixados, a programação transversal da plataforma torna-se muito mais fácil.
Eu sou eu mesmo muito novo aos wxWidgets mas ainda penned abaixo os novatos tutoriais em wxWidgets -
Durante este tutorial, um editor de texto muito simples será construído que possa carregar e conservar limas de texto. O tutorial focalizará no objeto da aplicação, na janela principal, e na tabela do evento.
A aplicação
Todas as aplicações dos wxWidgets são derivadas do wxApp, e necessitam simplesmente cancelar um único membro, wxApp:: OnInit, e cría uma janela. Contanto que a janela estiver aberta, a aplicação é também. O seguinte código ilustra o código necessitado.
classe MyApplication do #include “wx/wx.h”: wxApp público { público: bool OnInit (); </code> }; bool MyApplication:: OnInit () { // TODO: Janela de mostra falso do retorno; } IMPLEMENT_APP (MyApplication);
A primeira linha inclui a maioria das limas de encabeçamento necessitadas para uma aplicação dos wxWidgets. Uma classe nova é derivada então wxApp de MyApplication chamado o MyApplication, e:: A função de OnInit () é criada. Finalmente, IMPLEMENT_APP (MyApplication), é needed fazer com que a aplicação funcione. Este macro expande ao código correto para que toda a plataforma dada comece realmente a aplicação.
O quadro nos wxWidgets
Após ter criado a aplicação, o frame da janela necessita ser criado e os controles necessitam ser criados nele. O objeto do frame é derivado do wxFrame e, como mostrado abaixo, inclui diversas funções e o controle do texto.
classe MyFrame: wxFrame público { público: MyFrame (); OnNew vago (wxCommandEvent& evt); OnOpen vago (wxCommandEvent& evt); OnSave vago (wxCommandEvent& evt); confidencial: CreateWidgets vago (); m_text do wxTextCtrl*; }; MyFrame:: MyFrame (): wxFrame (ZERO, wxID_ANY, wxT (de “programa amostra”)) { CreateWidgets (); } MyFrame vago:: OnNew (wxCommandEvent& WXUNUSED (evt)) { m_text-> Espaço livre (); } MyFrame vago:: OnOpen (wxCommandEvent& WXUNUSED (evt)) { lima wxString =:: wxFileSelector (wxT (“lima aberta”)); se (== de file.IsEmpty () falso) m_text-> LoadFile (lima); } MyFrame vago:: OnSave (wxCommandEvent& WXUNUSED (evt)) { lima wxString =:: wxFileSelector (wxT (“excepto a lima”)); se (== de file.IsEmpty () falso) m_text-> SaveFile (lima); } MyFrame vago:: CreateWidgets () { // cría um controle do texto m_text = wxTextCtrl novo (este, wxID_ANY, wxEmptyString, o wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_TAB | wxTE_PROCESS_ENTER | wxTE_MULTILINE); // cría o menu de lima fileMenu do wxMenu* = wxMenu novo (); fileMenu-> Adicionar (wxID_NEW, wxT (“lima nova”)); fileMenu-> Adicionar (wxID_OPEN, wxT (“lima aberta”)); fileMenu-> Adicionar (wxID_SAVE, wxT (“excepto a lima”)); // cría a barra de menu wxMenuBar menuBar = novo do wxMenuBar* (); menuBar-> Adicionar (fileMenu, wxT (“lima”)); // ajustou o menu SetMenuBar (menuBar); }
Todo esse código cría a janela. O construtor MyFrame:: MyFrame chama o wxFrame do construtor do pai:: o wxFrame para criar o frame e para dar-lhe um nome, e então chamam CreateWidgets, para criar os índices do frame. O MyFrame:: A função de CreateWidgets cría um controle do texto e uma barra de menu. Além, funçãoMyFrame:: OnNew, MyFrame:: OnOpen, e MyFrame:: OnSave é executado ao espaço livre, aberto, ou excepto o texto a uma lima. Observar também que as constantes do texto estão incluídas no wxT (...). Desde que os wxWidgets podem compilar em Unicode também, envolvendo constantes do texto como isto se assegura de que estejam declarar corretamente.
A tabela do evento nos wxWidgets
A tabela do evento é usada distribuir eventos dos controles, dos menus, e de qualquer outra coisa às funções corretas para segurar os eventos. Sem eles, esta aplicação não carrega ou conserva o texto. As seguintes mudanças são needed executar a tabela do evento.
classe MyFrame: wxFrame público { … … 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 ()
Primeiramente, a tabela do evento para o frame é declarada. A tabela é criada então, e o wxID_NEW, o wxID_OPEN, e o wxID_SAVE dos ids do evento são usados chamar as funções MyFrame:: OnNew, MyFrame:: OnOpen, e MyFrame:: OnSave. Os eventos gerados pelos menus começarão processados pelas funções corretas.
Mostrando o frame
Agora que o frame está completo, uma mudança pequena é needed a aplicação. Necessita criar o frame da janela, mostrá-lo, e ajustá-lo como a janela do alto da aplicação.
bool MyApplication:: OnInit () { // cría e mostra o frame Frame de MyFrame* = MyFrame novo (); frame-> Mostra (); SetTopWindow (quadro); do retorno rectificar; }
O código completo
#include “wx/wx.h”/frame principal da janela classe MyFrame: wxFrame público { público: MyFrame (); OnNew vago (wxCommandEvent& evt); OnOpen vago (wxCommandEvent& evt); OnSave vago (wxCommandEvent& evt); confidencial: CreateWidgets vago (); m_text do wxTextCtrl*; 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 […]