1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
|
#if defined(__GNUG__) && !defined(__APPLE__)
#pragma implementation "monEditeurAnsiStaticApp.h"
#endif
// For compilers that support precompilation, includes "wx/wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifndef WX_PRECOMP
#include "wx/wx.h"
#endif
#include <wx/string.h>
#include <wx/msgdlg.h> // Pour la fonction wxMessageBox
#include <wx/textctrl.h> // Pour la classe wxTextCtrl
class MonEditeurAnsiStaticApp: public wxApp
{
public:
MonEditeurAnsiStaticApp();
virtual bool OnInit();
};
DECLARE_APP(MonEditeurAnsiStaticApp);
class MonEditeurAnsiStaticFrame: public wxFrame
{
public:
MonEditeurAnsiStaticFrame(wxWindow* parent, wxWindowID id = -1,
const wxString& caption = _("Mon éditeur Ansi Static"),
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = wxDEFAULT_FRAME_STYLE);
~MonEditeurAnsiStaticFrame();
protected:
void CreerBarreMenus();
void CreerBarreDEtat();
void CreerZoneTexte();
void QuidItemTexteIci(wxCommandEvent& event);
void QuidItemTexteAilleurs(wxCommandEvent& event);
private:
enum {ID_STATUSBAR=wxID_HIGHEST+1,ID_ITEMMENU_TEXTE_ICI,
ID_ITEMMENU_TEXTE_AILLEURS, ID_ZONETEXTE};
wxMenu* m_MenuTexte;
wxTextCtrl* ptrZoneTexte;
};
///////////////////////////////////////
IMPLEMENT_APP(MonEditeurAnsiStaticApp)
MonEditeurAnsiStaticApp::MonEditeurAnsiStaticApp() : wxApp()
{
// D'office, il y a un appel au constructeur de la classe de base (Dupin, p. 231-233).
}
bool MonEditeurAnsiStaticApp::OnInit()
{
wxApp::OnInit();
MonEditeurAnsiStaticFrame* mainWindow = new MonEditeurAnsiStaticFrame(NULL);
// Pourquoi le paramètre NULL ? (J'ai imité Fred Cailleau-Lepetit).
mainWindow->SetSize(wxSize(640, 480));
mainWindow->Show(true);
return true;
}
MonEditeurAnsiStaticFrame::MonEditeurAnsiStaticFrame(wxWindow* parent, wxWindowID id, const wxString& caption,
const wxPoint& pos, const wxSize& size, long style)
{
wxFrame::Create(parent, id, caption, pos, size, style); // Ce n'est sans doute pas
// un bon usage de Create(), mais peu importe.
CreerBarreMenus();
CreerBarreDEtat();
Connect(ID_ITEMMENU_TEXTE_ICI, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(MonEditeurAnsiStaticFrame::QuidItemTexteIci));
Connect(ID_ITEMMENU_TEXTE_AILLEURS, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(MonEditeurAnsiStaticFrame::QuidItemTexteAilleurs));
}
MonEditeurAnsiStaticFrame::~MonEditeurAnsiStaticFrame()
{
}
void MonEditeurAnsiStaticFrame::CreerBarreMenus()
{
wxMenuBar* barreMenus = new wxMenuBar;
m_MenuTexte = new wxMenu;
m_MenuTexte->Append(ID_ITEMMENU_TEXTE_ICI, _("&Ici"));
m_MenuTexte->Append(ID_ITEMMENU_TEXTE_AILLEURS, _("&Ailleurs"));
barreMenus->Append(m_MenuTexte, _("&Texte"));
SetMenuBar(barreMenus);
}
void MonEditeurAnsiStaticFrame::CreerBarreDEtat()
{
wxStatusBar* BarreDEtat = new wxStatusBar(this, ID_STATUSBAR,
wxST_SIZEGRIP|wxNO_BORDER);
BarreDEtat->SetFieldsCount(3);
SetStatusBar(BarreDEtat);
}
void MonEditeurAnsiStaticFrame::QuidItemTexteIci(wxCommandEvent& event)
{
MonEditeurAnsiStaticFrame * ptrSurFenetre;
SetTitle(wxString("Résultat dans la fenêtre initiale."));
ptrSurFenetre = this;
ptrSurFenetre->CreerZoneTexte();
}
void MonEditeurAnsiStaticFrame::QuidItemTexteAilleurs(wxCommandEvent& event)
{
MonEditeurAnsiStaticFrame * ptrSurFenetre;
ptrSurFenetre = new MonEditeurAnsiStaticFrame(NULL);
ptrSurFenetre->SetSize(wxSize(640, 480));
ptrSurFenetre->SetTitle(wxString("Résultat dans la nouvelle fenêtre.") );
ptrSurFenetre->Show(true);
ptrSurFenetre->CreerZoneTexte();
}
void MonEditeurAnsiStaticFrame::CreerZoneTexte()
{
ptrZoneTexte = new wxTextCtrl(this, ID_ZONETEXTE, wxEmptyString,
wxDefaultPosition, wxDefaultSize,
wxTE_MULTILINE | wxTE_PROCESS_ENTER | wxTE_RICH | wxTE_NOHIDESEL);
} |
Partager