begin process at 2012 05 27 13:39:46
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

.Net

 > APPLICATION GUI MULTI-PLATEFORME ORIENTÉ OBJET[DEV-C++]

APPLICATION GUI MULTI-PLATEFORME ORIENTÉ OBJET[DEV-C++]


 Information sur la source

Note :
1 / 10 - par 1 personne
1,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :.Net Niveau :Débutant Date de création :17/01/2003 Date de mise à jour :17/01/2003 13:49:53 Vu :4 075

Auteur : DreamProjectTeam

Ecrire un message privé
Site perso
Commentaire sur cette source (0)
Ajouter un commentaire et/ou une note

 Description

Pour utiliser cette source, vous devez telecharger le kit de developpement wxWindows sur le site de Dev-C++.
Lancez ensuite le modèle d'application wx, puis remplacez les fichiers créés par ceux du tutorial; vous aurez alors votre projet configuré.
L'interet de ce kit par rapport à GTK est qu'il utilise les fonctions de chaque OS pour créer les fenetres par rapport à GTK qui se contente de "dessiner" ce qui peut produire certains artefacts graphiques pas tres jolis. De plus tou est orienté objet ce qui est super utile en programmation (pour ceux qui connaissent)...

Source

  • // main.h
  • #ifndef _MAIN_H_
  • #define _MAIN_H_
  • #include <wx/wx.h> // le header principal pour wx
  • class MainApp : public wxApp // la classe application est le point d'entrée du programme
  • {
  • public:
  • virtual bool OnInit(void); // on surcharge OnInit
  • };
  • class AppFrame : public wxFrame // on peut utiliser wxFrame telle quelle mais on la dérive pour gerer nos propres evenements
  • {
  • public:
  • AppFrame(const wxString &title, const wxPoint &pos, const wxSize &size);// constructeur
  • void OnQuit(wxCommandEvent &event); // evenement "l'utilisateur veut quitter"
  • void OnAbout(wxCommandEvent &event); // evenement "l'utilisateur clique sur le menu 'A props'"
  • private:
  • DECLARE_EVENT_TABLE()
  • };
  • enum // l'enum permet de creer un type d'entiers scalaires; c'est plus pratique qu'un #define car ca s'auto incrémente
  • {
  • MainApp_Quit = 1,// ID des evenements
  • MainApp_About
  • };
  • BEGIN_EVENT_TABLE(AppFrame, wxFrame)//on definit les evenements pour la classe wxAppFrame dérivée de wxFrame
  • EVT_MENU(MainApp_Quit, AppFrame::OnQuit)//On associe chaque ID d'evenement avec une fonction
  • EVT_MENU(MainApp_About, AppFrame::OnAbout)
  • END_EVENT_TABLE()
  • #endif _MAIN_H__
  • // main.cpp
  • #include <wx/wx.h>
  • #include "main.h"
  • IMPLEMENT_APP(MainApp) // wx se debrouille pour initialiser le programme avec notre classe MainApp
  • bool MainApp::OnInit()
  • {
  • AppFrame *frame;
  • frame = new AppFrame("La super application!", wxPoint(50, 50), wxSize(450, 340));// creation de la fenetre
  • frame->Show(TRUE);// et on l'affiche
  • return TRUE; // si on retourne false, le programme s'arrete
  • }
  • AppFrame::AppFrame(const wxString &title, const wxPoint &pos, const wxSize& size)
  • : wxFrame ((wxFrame *) NULL, -1, title, pos, size)
  • {
  • wxMenuBar *menuBar;
  • wxMenu *fileMenu;
  • SetIcon(wxICON(A));// A est le nom donné à l'icone principale par Dev-C++
  • fileMenu = new wxMenu("", wxMENU_TEAROFF);
  • fileMenu->Append(MainApp_About, "&A propos...\tCtrl-A", "Montre la fenetre \'A propos\'");
  • fileMenu->Append(MainApp_Quit, "&Quitter\tCtrl-Q", "Quitter le programme");
  • // on Ajoute des menus au menu "Fichier" dans la barre; l'ordre compte
  • // Parametres : ID de l'evenement à lancer, chaine à afficher+raccourci clavier, chaine à afficher dans la barre de statut
  • menuBar = new wxMenuBar();
  • menuBar->Append(fileMenu, "&Fichier");
  • // on attahce le menu fichier à la barre de menu
  • SetMenuBar(menuBar);// on associe la barre de menu à notre fenetre
  • CreateStatusBar(2);// on crée une barre de statut pour notre fenetre
  • SetStatusText("En attente.");// on donne le texte par defaut de la barre de statut
  • }
  • // evenements
  • void AppFrame::OnQuit(wxCommandEvent &WXUNUSED(event))
  • {
  • Close(TRUE);// si l'utilisateur veut quitter, on ferme la fenetre
  • // mais on peut aussi lui poser un question("voulez-vous enregistrer/quitter?"...)
  • }
  • void AppFrame::OnAbout(wxCommandEvent &WXUNUSED(event))
  • {
  • wxString msg;
  • msg.Printf("Mon App version tutorial");
  • wxMessageBox(msg, "Créé par Kami, visitez http://dreamproject.free.fr/", wxOK | wxICON_INFORMATION, this);
  • // un equivalent du MessageBox sous Windows
  • }
// main.h

#ifndef _MAIN_H_
#define _MAIN_H_

#include <wx/wx.h> // le header principal pour wx

class MainApp : public wxApp // la classe application est le point d'entrée du programme
{
public:
    virtual bool OnInit(void); // on surcharge OnInit
};

class AppFrame : public wxFrame // on peut utiliser wxFrame telle quelle mais on la dérive pour gerer nos propres evenements
{
public:
    AppFrame(const wxString &title, const wxPoint &pos, const wxSize &size);// constructeur

    void OnQuit(wxCommandEvent &event); // evenement "l'utilisateur veut quitter"
    void OnAbout(wxCommandEvent &event); // evenement "l'utilisateur clique sur le menu 'A props'"
private:
    DECLARE_EVENT_TABLE()
};

enum // l'enum permet de creer un type d'entiers scalaires; c'est plus pratique qu'un #define car  ca s'auto incrémente
{
    MainApp_Quit = 1,// ID des evenements
    MainApp_About
};

BEGIN_EVENT_TABLE(AppFrame, wxFrame)//on definit les evenements pour la classe wxAppFrame dérivée de wxFrame
    EVT_MENU(MainApp_Quit,  AppFrame::OnQuit)//On associe chaque ID d'evenement avec une fonction
    EVT_MENU(MainApp_About, AppFrame::OnAbout)
END_EVENT_TABLE()

#endif _MAIN_H__

// main.cpp

#include <wx/wx.h>
#include "main.h"

IMPLEMENT_APP(MainApp) // wx se debrouille pour initialiser le programme avec notre classe MainApp

bool MainApp::OnInit()
{
    AppFrame *frame;

    frame = new AppFrame("La super application!", wxPoint(50, 50), wxSize(450, 340));// creation de la fenetre
    frame->Show(TRUE);// et on l'affiche

    return TRUE; // si on retourne false, le programme s'arrete
}


AppFrame::AppFrame(const wxString &title, const wxPoint &pos, const wxSize& size)
  : wxFrame ((wxFrame *) NULL, -1, title, pos, size)
{
    wxMenuBar *menuBar;
    wxMenu *fileMenu;
    
    SetIcon(wxICON(A));// A est le nom donné à l'icone principale par Dev-C++

    fileMenu = new wxMenu("", wxMENU_TEAROFF);
    fileMenu->Append(MainApp_About, "&A propos...\tCtrl-A", "Montre la fenetre \'A propos\'");
    fileMenu->Append(MainApp_Quit, "&Quitter\tCtrl-Q", "Quitter le programme");
// on Ajoute des menus au menu "Fichier" dans la barre; l'ordre compte
// Parametres : ID de l'evenement à lancer, chaine à afficher+raccourci clavier, chaine à afficher dans la barre de statut
    menuBar = new wxMenuBar();
    menuBar->Append(fileMenu, "&Fichier");
// on attahce le menu fichier à la barre de menu

    SetMenuBar(menuBar);// on associe la barre de menu à notre fenetre
    CreateStatusBar(2);// on crée une barre de statut pour notre fenetre
    SetStatusText("En attente.");// on donne le texte par defaut de la barre de statut
}

// evenements

void AppFrame::OnQuit(wxCommandEvent &WXUNUSED(event))
{
    Close(TRUE);// si l'utilisateur veut quitter, on ferme la fenetre
// mais on peut aussi lui poser un question("voulez-vous enregistrer/quitter?"...)
}

void AppFrame::OnAbout(wxCommandEvent &WXUNUSED(event))
{
    wxString msg;

    msg.Printf("Mon App version tutorial");
    wxMessageBox(msg, "Créé par Kami, visitez http://dreamproject.free.fr/", wxOK | wxICON_INFORMATION, this);
// un equivalent du MessageBox sous Windows
}

 Conclusion

L'executable produit sera assez gros mais vous pouvez &lt;réduire&gt; sa taille en utilisant une dll externe. Pour cela il faut specifier un truc du genre #define WX_DLLEXPORT
Je n'ai jamais réussi à le faire fonctionner donc si vous y parvenez laissez un message.


 Sources du même auteur

TUTORIAL OPERATEURS PARTIE 1
Source avec Zip DPSTRING [TESTÉ SOUS DEV-C++ 5]

 Sources de la même categorie

Source avec Zip Source avec une capture ANALYSEUR LEXICAL par Donald180v
Source avec Zip Source avec une capture MAP_MAKER_JEU par seekplus
Source avec Zip Source avec une capture Source .NET (Dotnet) EMISSION D'UN OCTET SUR LE PORT SÉRIE - CLASSE SERIALPORT par jmchatelet01
Source avec Zip Source .NET (Dotnet) RESOLV EQU DE DEGRES N par darckangel731
Source avec Zip Source avec une capture Source .NET (Dotnet) INTEROP XCHAT / .NET : CHARGEUR DE PLUGINS MANAGÉS par TeBeCo

Commentaires et avis

Aucun commentaire pour le moment.

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,796 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales