[wxWidget] wxStyledTextCtrl

wxStyledTextCtrl [wxWidget] - C++ - Programmation

Marsh Posté le 02-02-2005 à 18:40:19    

Bonjour,
 
Voici le code de main.h:

Code :
  1. #include <wx/wxprec.h>
  2. #include <wx/wx.h>
  3. class Ini: public wxApp{
  4.   public:
  5.    virtual bool OnInit();
  6. };
  7. class Prog: public wxFrame{
  8.   public:
  9.    Prog(const wxChar *title, int xpos, int ypos, int width, int height);
  10.    void OnFichierNouveau(wxCommandEvent &event);
  11.   private:
  12.    wxMenuBar *MenuBar;
  13.    wxMenu *m_fichier;
  14.    enum{
  15.      FICHIER_NOUVEAU
  16.    };
  17.   protected:
  18.    DECLARE_EVENT_TABLE()
  19. };
  20. class DialAllera : public wxDialog{
  21.   public:
  22.    DialAllera(wxWindow *parent);
  23.    virtual ~DialAllera(){};
  24.    void OnBoutonAnnuler(wxCommandEvent &event);
  25.   private:
  26.    wxButton *bouton_annuler;
  27.    enum{
  28.      BOUTTON_ANNULER = 1010
  29.    };
  30.   protected:
  31.    DECLARE_EVENT_TABLE()
  32. };
  33. DECLARE_APP(Ini);


 
Voici le code main.cpp:

Code :
  1. #include <wx/wxprec.h>
  2. #include <wx/wx.h>
  3. #include <wx/file.h>
  4. #include <wx/stc/stc.h>
  5. #include "main.h"
  6. using namespace std;
  7. Prog::Prog(const wxChar *title, int xpos, int ypos, int width, int height) : wxFrame((wxFrame *) NULL, -1, title, wxPoint(xpos, ypos), wxSize(width, height)){
  8.   MenuBar = new wxMenuBar();
  9.   m_fichier = new wxMenu();
  10.   m_fichier->Append(FICHIER_NOUVEAU, "&wxDialog" );
  11.   MenuBar->Append(m_fichier, "&Fichier" );
  12.   SetMenuBar(MenuBar);
  13.   wxStyledTextCtrl *text = new wxStyledTextCtrl(this, -1, wxDefaultPosition, wxDefaultSize);
  14.   wxBoxSizer *sizer_2 = new wxBoxSizer(wxHORIZONTAL);
  15.   sizer_2->Add(text, 0, wxALL, 5);
  16. }
  17. BEGIN_EVENT_TABLE(Prog, wxFrame)
  18.   EVT_MENU(FICHIER_NOUVEAU, Prog::OnFichierNouveau)
  19. END_EVENT_TABLE()
  20. BEGIN_EVENT_TABLE(DialAllera, wxDialog)
  21.   EVT_BUTTON(BOUTTON_ANNULER, DialAllera::OnBoutonAnnuler)
  22. END_EVENT_TABLE()
  23. /**********DIALOG**********/
  24. DialAllera::DialAllera(wxWindow *parent): wxDialog(parent, -1, "Aller à", wxDefaultPosition, wxSize(-1, -1), wxDEFAULT_DIALOG_STYLE){
  25.   bouton_annuler = new wxButton(this, BOUTTON_ANNULER, "Annuler", wxDefaultPosition, wxDefaultSize);
  26.   wxBoxSizer *sizer_2 = new wxBoxSizer(wxHORIZONTAL);
  27.   sizer_2->Add(bouton_annuler, 0, wxALL, 5);
  28. }
  29. void DialAllera::OnBoutonAnnuler(wxCommandEvent& command){
  30.   Destroy();
  31. }
  32. /**********END DIALOG**********/
  33. void Prog::OnFichierNouveau(wxCommandEvent &event){
  34.    DialAllera *recher = new DialAllera(this);
  35.    recher->ShowModal();
  36. }
  37. IMPLEMENT_APP(Ini);
  38. bool Ini::OnInit(){
  39.   Prog *frame = new Prog("Titre", 0, 0, -1, -1);
  40.   frame->Maximize(TRUE);
  41.   frame->Show(TRUE);
  42.   return true;
  43. }


 
Ce code fonctionne très bien sur Windows, par contre sur Linux, j'ai un bug:
-Si j'ouvre et ferme le wxDialog, il y a le curseur du wxStyledTextCtrl qui disparait, pourquoi ?
-Ensuite si je ré-ouvre et ferme le wxDialog, le curseur réapparait.
 
NB: Quand le curseur disparait, il y a certaines fonction comme GotoLine() qui ne vont plus, ce qui est ennuyant.
 
Merci d'avance...


Message édité par vincent0 le 02-02-2005 à 18:43:13
Reply

Marsh Posté le 02-02-2005 à 18:40:19   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed