[C/C++] console -> graphique

console -> graphique [C/C++] - C++ - Programmation

Marsh Posté le 29-12-2004 à 22:05:58    

Bonjour,
 
Voila j'ai fait un jeux (morpion) en mode console.
Maintenant on me demande de le mettre en mode graphique (donc avec un menu, des bouttons).
Je doit juste faire la fenetre et adapté le code.
Je sais pas utilisé MFC.
 
Comment est ce que je devrait faire pour que ça reste simple ?
 
Merci d'avance.

Reply

Marsh Posté le 29-12-2004 à 22:05:58   

Reply

Marsh Posté le 29-12-2004 à 22:09:33    

utilise le frameworks wxWidgets, tu  verrqs c est relqtivement simple (les bases)

Reply

Marsh Posté le 30-12-2004 à 10:50:01    

Vous n'auriez pas un exemple de code (qui utilise le frameworks wxWidgets) avec une fenetre déjà faite pour que je vois comment ca marche.
Merci.

Reply

Marsh Posté le 30-12-2004 à 13:12:08    

manson69 a écrit :

Vous n'auriez pas un exemple de code (qui utilise le frameworks wxWidgets) avec une fenetre déjà faite pour que je vois comment ca marche.
Merci.


 
Si bien sur, regarde :
 
 

Citation :

Code :
  1. #ifndef WX_PRECOMP
  2.     #include <wx/wx.h>
  3. #endif
  4. #include "wx/wxprec.h"
  5. // declaration
  6. class base_app: public wxApp {
  7.    
  8. public:
  9.     base_app();
  10.    
  11.     virtual bool OnInit( );
  12.     virtual int OnExit( );
  13.    
  14.     int get_hsize( );
  15.     int get_vsize( );
  16. private:
  17.     int hsize, vsize;
  18. };
  19. class frame_principale: public wxFrame {
  20.    
  21. public:
  22.     frame_principale( wxWindow *parent, wxWindowID id, const wxString &title,
  23.                 const wxPoint& pos = wxDefaultPosition,
  24.                 const wxSize& size = wxDefaultSize,
  25.                 long style = wxDEFAULT_FRAME_STYLE );
  26.     ~frame_principale( );
  27.    
  28.    
  29. private:
  30.          
  31.     wxMenuBar *menubar;
  32.     wxMenu *menu_fichier, *menu_aide;
  33.    
  34.     void create_menubar();
  35.    
  36.     void on_quit( wxCommandEvent & );
  37.     void on_about( wxCommandEvent & );
  38.    
  39.     DECLARE_EVENT_TABLE( )
  40. };
  41. enum {
  42.     MENU_FICHIER_QUITTER,
  43.     MENU_AIDE_APROPOS
  44. };
  45. // implementation de la base de l'application
  46. DECLARE_APP( base_app )
  47. base_app::base_app( ) {
  48.    
  49.     hsize = wxGetDisplaySize().x;
  50.     vsize = wxGetDisplaySize().y;
  51. }
  52. bool base_app::OnInit( ) {
  53.    
  54.     frame_principale *frame = new frame_principale( NULL, -1, "Titre de ton Application", wxPoint(20,20), wxSize(get_hsize() - 200, get_vsize() - 200) );
  55.     frame->Show( TRUE );
  56.     SetTopWindow( frame );
  57.    
  58.     return TRUE;
  59. }
  60. int base_app::OnExit( ) {
  61.    
  62.     return 0;
  63. }
  64. int base_app::get_hsize( ) {
  65.    
  66.     return hsize;
  67. }   
  68. int  base_app::get_vsize( ) {
  69.    
  70.     return vsize;
  71. }   
  72. // implementation de la fenetre principale
  73. BEGIN_EVENT_TABLE( frame_principale, wxFrame )
  74.     EVT_MENU( MENU_FICHIER_QUITTER_QUIT, frame_principale::on_quit )
  75.     EVT_MENU( MENU_AIDE_APROPOS, frame_principale::on_about ) 
  76. END_EVENT_TABLE( )
  77. frame_principale::frame_principale( wxWindow *parent, wxWindowID id, const wxString &title, const wxPoint &position, const wxSize& size, long style )
  78.         : wxFrame( parent, id, title, position, size, style ) {
  79.            
  80.     create_menubar( );
  81. }
  82. frame_principale::~frame_principale( ) { }
  83. void frame_principale::create_menubar( ) {
  84.    
  85.     menu_fichier = new wxMenu;
  86.     menu_fichier->Append( MENU_FICHIER_QUITTER, "&Quitter" );
  87.    
  88.     menu_aide = new wxMenu;
  89.     menu_aide->Append( MENU_AIDE_APROPOS, "&About" );
  90.    
  91.     menubar = new wxMenuBar;
  92.     menubar->Append( menu_fichier, "&Fichier" );
  93.     menubar->Append( menu_aide, "&Aide" );
  94.    
  95.     SetMenuBar( menubar );
  96. }
  97. void frame_principale::on_about( wxCommandEvent &event ) {
  98.    
  99.     wxMessageBox( "La boite A PROPOS de ton application", "A propos..." );
  100. }
  101. void frame_principale::on_quit( wxCommandEvent &event ) {
  102.    
  103.     Close( TRUE );
  104. }



 
 
et si par la suite tu veux pouvoir insérer, enfin ca ce n'est  pas trop le probleme, mais insérer + 'positionner' des controls, une solution s'offre a toi > cf. topic wxWidgets->wxBoxSizer
 
Voici l'url pour télécharger le framework, http://www.wxwidgets.org/, par contre si tu utilise Dev-Cpp, il me semble qu'il existe un paquet de wxWindow mais version 2.4.*   :/ sinon tu devras installer la derniere version de wxWindow à la main.


Message édité par ouned-coding le 30-12-2004 à 13:20:44
Reply

Marsh Posté le 31-12-2004 à 10:53:24    

Vous pouvez utiliser les MXClass !
http://nte-serveur.univ-lyon1.fr/merrheim/MXClass
J'ai programmé un jeu de puissance 4 avec cette bibliothèque (écrite avec mes petites mains)
bon courage

Reply

Marsh Posté le 31-12-2004 à 13:30:50    

Ca a aurai été bien de tester deux ou trois programmes sous Linux, sais-tu que ce piti pinguin a deja quitter la banquise pour venir s'installé sur nos côtes ?
 
Je viens aussi de tester rapidement ta bibliotheque, joli boulot ;)
 

Citation :

Ce projet est ambitieux et il ne sera peut-être pas mené à son terme !


 
Ca serai dommage tout de même et puis donc, quel interet de developper (meme un simple jeu) basé sur cette lib qui ne sera (peut etre) jamais aboutie :??:


Message édité par ouned-coding le 31-12-2004 à 13:33:20
Reply

Marsh Posté le 31-12-2004 à 14:27:00    

Pourquoi utiliser les MXClass ? Juste pour voir si elle marche ! On ne promet pas que le projet sera terminé un jour car on a vu tant de projets informatiques qui ne sont jamais arrivés à leur terme qu'il faut être prudent. On ne voudrait pas bloquer des projets informatiques qui attendraient la version 0.1.4 (lol)! Par contre pour un jeu de morpion elle doit presque marcher !


Message édité par merrheim le 31-12-2004 à 14:29:06
Reply

Marsh Posté le 02-01-2005 à 00:07:54    

si tu cherches un tuto simple sur les bases de l'api win32 :
http://www.siteduzero.com/vostutos [...] tutoid=132

Reply

Sujets relatifs:

Leave a Replay

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