Você parece usar uma versão do Internet Explorer. Para uma experiência mais segura browsing, considerar por favore

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.

  1.  
  2. classe MyApplication do #include “wx/wx.h”: wxApp público
  3. {
  4. público:
  5. bool OnInit (); </code>
  6.  
  7. }; bool MyApplication:: OnInit () {
  8.  
  9. // TODO: Janela de mostra
  10.  
  11. falso do retorno;
  12.  
  13. } IMPLEMENT_APP (MyApplication);
  14.  

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.

  1.  
  2. classe MyFrame: wxFrame público
  3. {
  4. público: MyFrame (); OnNew vago (wxCommandEvent&amp; evt);
  5.  
  6. OnOpen vago (wxCommandEvent&amp; evt);
  7.  
  8. OnSave vago (wxCommandEvent&amp; evt); confidencial:
  9.  
  10. CreateWidgets vago ();
  11.  
  12. m_text do wxTextCtrl*;
  13. };
  14.  
  15. MyFrame:: MyFrame ():
  16.  
  17. wxFrame (ZERO, wxID_ANY, wxT (de “programa amostra”))
  18. {
  19. CreateWidgets ();
  20. }
  21.  
  22. MyFrame vago:: OnNew (wxCommandEvent&amp; WXUNUSED (evt))
  23. {
  24. m_text-&gt; Espaço livre ();
  25. }
  26.  
  27. MyFrame vago:: OnOpen (wxCommandEvent&amp; WXUNUSED (evt))
  28. {
  29. lima wxString =:: wxFileSelector (wxT (“lima aberta”));
  30. se (== de file.IsEmpty () falso)
  31. m_text-&gt; LoadFile (lima);
  32. }
  33.  
  34. MyFrame vago:: OnSave (wxCommandEvent&amp; WXUNUSED (evt))
  35. {
  36. lima wxString =:: wxFileSelector (wxT (“excepto a lima”));
  37. se (== de file.IsEmpty () falso)
  38. m_text-&gt; SaveFile (lima);
  39. }
  40. MyFrame vago:: CreateWidgets ()
  41. {
  42. // cría um controle do texto
  43. m_text = wxTextCtrl novo (este, wxID_ANY, wxEmptyString,
  44. o wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_TAB |
  45. wxTE_PROCESS_ENTER | wxTE_MULTILINE);
  46. // cría o menu de lima
  47.  
  48. fileMenu do wxMenu* = wxMenu novo ();
  49. fileMenu-&gt; Adicionar (wxID_NEW, wxT (“lima nova”));
  50. fileMenu-&gt; Adicionar (wxID_OPEN, wxT (“lima aberta”));
  51. fileMenu-&gt; Adicionar (wxID_SAVE, wxT (“excepto a lima”));
  52. // cría a barra de menu
  53. wxMenuBar menuBar = novo do wxMenuBar* ();
  54. menuBar-&gt; Adicionar (fileMenu, wxT (“lima”));
  55. // ajustou o menu
  56. SetMenuBar (menuBar);
  57. }

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.

  1.  
  2. classe MyFrame: wxFrame público
  3.  
  4. {
  5.  
  6.  
  7. DECLARE_EVENT_TABLE ();
  8.  
  9. };
  10.  
  11. BEGIN_EVENT_TABLE (MyFrame, wxFrame)
  12.  
  13. EVT_MENU (wxID_NEW, MyFrame:: OnNew)
  14.  
  15. EVT_MENU (wxID_OPEN, MyFrame:: OnOpen)
  16.  
  17. EVT_MENU (wxID_SAVE, MyFrame:: OnSave)
  18.  
  19. 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.

  1.  
  2. bool MyApplication:: OnInit ()
  3.  
  4. {
  5.  
  6. // cría e mostra o frame
  7.  
  8. Frame de MyFrame* = MyFrame novo ();
  9.  
  10. frame-&gt; Mostra (); SetTopWindow (quadro);
  11.  
  12. do retorno rectificar;
  13.  
  14. }

O código completo

  1.  
  2. #include “wx/wx.h”/frame principal da janela
  3. classe MyFrame: wxFrame público
  4. {
  5. público:
  6. MyFrame ();
  7.  
  8. OnNew vago (wxCommandEvent&amp; evt);
  9.  
  10. OnOpen vago (wxCommandEvent&amp; evt);
  11.  
  12. OnSave vago (wxCommandEvent&amp; evt);
  13.  
  14. confidencial:
  15. CreateWidgets vago ();
  16.  
  17. m_text do wxTextCtrl*;
  18.  
  19. DECLARE_EVENT_TABLE();
  20. };
  21.  
  22. MyFrame::MyFrame() :
  23. wxFrame(NULL, wxID_ANY, wxT("Sample Program"))
  24. {
  25. CreateWidgets();
  26. }
  27.  
  28. void MyFrame::OnNew(wxCommandEvent&amp; WXUNUSED(evt))
  29. {
  30.  
  31. m_text-&gt;Clear();
  32. }
  33.  
  34. void MyFrame::OnOpen(wxCommandEvent&amp; WXUNUSED(evt))
  35. {
  36.  
  37. wxString file = ::wxFileSelector(wxT("Open file"));
  38.  
  39. if(file.IsEmpty() == false)
  40.  
  41. m_text-&gt;LoadFile(file);
  42. }
  43.  
  44. void MyFrame::OnSave(wxCommandEvent&amp; WXUNUSED(evt))
  45. {
  46. wxString file = ::wxFileSelector(wxT("Save file"));
  47.  
  48. if(file.IsEmpty() == false)
  49.  
  50. m_text-&gt;SaveFile(file);
  51.  
  52. }
  53.  
  54. void MyFrame::CreateWidgets()
  55. {
  56. // Create a text control
  57.  
  58. m_text = new wxTextCtrl(this, ID_TEXTCTRL, wxEmptyString,
  59.  
  60. wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_TAB |
  61.  
  62. wxTE_PROCESS_ENTER | wxTE_MULTILINE);
  63.  
  64. // Create file menu
  65.  
  66. wxMenu* fileMenu = new wxMenu();
  67.  
  68. fileMenu-&gt;Append(wxID_NEW, wxT("New File"));
  69.  
  70. fileMenu-&gt;Append(wxID_OPEN, wxT("Open File"));
  71.  
  72. fileMenu-&gt;Append(wxID_SAVE, wxT("Save File"));
  73.  
  74. // Create menu bar
  75.  
  76. wxMenuBar* menuBar = new wxMenuBar();
  77.  
  78. menuBar-&gt;Append(fileMenu, wxT("File"));
  79.  
  80. // Set menu
  81.  
  82. SetMenuBar(menuBar);
  83.  
  84. }
  85.  
  86. // Event table to route menu events to functions
  87.  
  88. BEGIN_EVENT_TABLE(MyFrame, wxFrame)
  89.  
  90. EVT_MENU(wxID_NEW, MyFrame::OnNew)
  91.  
  92. EVT_MENU(wxID_OPEN, MyFrame::OnOpen)
  93.  
  94. EVT_MENU(wxID_SAVE, MyFrame::OnSave)
  95.  
  96. END_EVENT_TABLE()
  97.  
  98. // Application
  99.  
  100. class MyApplication : public wxApp
  101. {
  102. public:
  103.  
  104. bool OnInit();
  105. };
  106.  
  107. bool MyApplication::OnInit()
  108. {
  109.  
  110. // Create and show the frame
  111.  
  112. MyFrame* frame = new MyFrame();
  113.  
  114. frame-&gt;Show();
  115.  
  116. SetTopWindow(frame);
  117.  
  118. return true;
  119. }
  120.  
  121. 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.

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...
Subscribe in a reader |

Links you may find interesting - Yes ! Comments are FOLLOW So feel free to link back to related and meaningful posts.

2 Responses to “Programming with wxWidgets”

  1. MyAvatars 0.2 TheCredence Says:

    I have formatted all the wxWidgets code with proper indentation to make it more readable now :)

  2. MyAvatars 0.2 Highlight and show formatted C++, PHP, Perl, Ruby, Python, Java, HTML Code in Wordpress Says:

    […] 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 […]

Post A Comment