[C++] Réaliser ses propres contrôles graphiques ?

Réaliser ses propres contrôles graphiques ? [C++] - C++ - Programmation

Marsh Posté le 04-11-2004 à 19:40:11    

Je finis par poster ce sujet car je n'ai pas réussi à trouver une réponse à ma question.  
 
je m'explique:
 
J'ai besoin de réaliser une interface utilisateur qui ait l'air d'un cockpit d'avion (grossièrement hein). J'aurai donc besoin de compte-tours par exemple. J'ai vu qu'il y avait des controles dans ce gout là sur CVI. Mais le truc, c'est que je compte utiliser les MFC ou bien QT, et qu'il n'y a pas ce type de contrôle.  
 
Je me posais donc la question de savoir si il était possible de réaliser des propres contrôles, sans pour autant devoir y passer un temps trop long. Quant à l'OpenGL, ca semble plutôt inadapté.
 
Merci de m'éclairer

Reply

Marsh Posté le 04-11-2004 à 19:40:11   

Reply

Marsh Posté le 04-11-2004 à 19:49:58    

Réaliser ses contrôles oui tout est possible. Sans y passer du temps hum...
En Qt y'a ça :
http://qwt.sourceforge.net/


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 06-11-2004 à 20:21:27    

Merci pour ta réponse. Malheureusement, l'utilisation de Qt sous Windows me semble malencontreusement compromise, la compilation de ce dernier ne se fait pas correctement  :fou:

Reply

Marsh Posté le 06-11-2004 à 20:24:21    

Ah bon ? Vu le prix, ça me ferait mal que QT ne fonctionne pas bien sous Windows...
 
Pourquoi pas GTK, .NET ou WxWidgets ?
 
Et pourquoi tu as besoin d'un "contrôle" pour faire une vue de cockpit. Une simple zone bitmap dans laquelle du dessine, ça suffit. wxBitmap en wsWidgets :)

Reply

Marsh Posté le 06-11-2004 à 22:28:24    

Un cockpit y'a plein de choses qui réagissent : aiguille qui bouge, compteurs, ...


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 07-11-2004 à 00:15:11    

Tout à fait, ya plein de trucs qui bougent et je me vois pas faire ça avec bitmap + dessin.  
 
Mon programme doit être réalisé en C++ donc exit GTK.  
 
Le .NET, je m'y suis pas penché mais j'ai cru comprendre que c'était pas très facile à manier. Est ce qu'il y a avec .NET la possibilité de se faire des contrôles sans trop de soucis ?  
 
WxWidgets, d'après ce que j'ai vu, ça ressemble à du MFC, et j'ai eu du mal à l'utiliser avec DevC++. Qu'est ce que ça m'apporterait en plus ?

Reply

Marsh Posté le 07-11-2004 à 01:50:48    

.Net pas possible en C++ standard, ça utilise une version un peu spéciale de C++, et c'est pas le top. Mais si on utilise C# ou VB.Net, c'est très simple à manier.
wxWidgets par r/r a Qt ca apporte la gratuité. Mais Qt c'est tres bien.
Dessiner tes controles ca sera dur. Le mieux c'est une liste d'images pour chaque controle. Ce sera assez facile à programmer (ca revient à afficher la bonne image) et si t'es bon dessinateur la résultat sera tres satisfaisant.
Tu possède une licence pour Qt sous Windows ?


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 07-11-2004 à 08:56:51    

Déjà, je comprend toujours pas la difficulté. Pour moi, un compte-tours, c'est:
 - un rectangle noir
 - un cercle blanche
 - des graduations (donc une boucle qui déssine un ségment tous les 20 degrés.
 - une aiguille (donc un segment avec une épaisseur de trait plus grosse).
 
Je veux dire, si les jeux vidéos 8 bits des années 80 y arrivaient, ça doit pas être bien dur, non ?
 
 
Ensuite, en ce qui concerne les langages:
 - C++ peut utiliser GTKmm pour avoir une API C++ (et de toute façons, rien n'empêche d'utiliser une API C en C++, si ce n'est des convictions religieuses un peu déplacées ;)
 
 - .NET est TRES TRES TRES simple à manier, et marche très bien en C++ (standard ou managed). C'est pas pour rien si Microsoft a embauché Herb Sutter. C'est surtout le standard de demain (2-3 ans), donc ça sert à rien de vivre dans le passé: si tu n'as aucun besoin de portabilité, et que tu peux te permettre d'installer le framework sur les postes cibles, alors .NET devrait être ta solution par défaut. Je sais, ça me fait mal au cul à moi aussi.
 
 - wxWidgets sous Dev-C++, c'est vraiment très simple. Il y a une semaine a peu près, on a eu un topic et quelqu'un a posté un lien vers un paquet de FAQ là-dessus. (au pire, tu recherches Dev-CPP sur le site de wxWidgets).


Message édité par Lam's le 07-11-2004 à 09:06:45
Reply

Marsh Posté le 07-11-2004 à 09:02:54    

Ilog views comprend déjà ces contrôles tout faits.
 
http://www.ilog.fr/products/views/controls/content/controls_home2.gif


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 07-11-2004 à 09:18:39    

Lam's a écrit :

Déjà, je comprend toujours pas la difficulté. Pour moi, un compte-tours, c'est:
 - un rectangle noir
 - un cercle blanche
 - des graduations (donc une boucle qui déssine un ségment tous les 20 degrés.
 - une aiguille (donc un segment avec une épaisseur de trait plus grosse).
 
Je veux dire, si les jeux vidéos 8 bits des années 80 y arrivaient, ça doit pas être bien dur, non ?


C'est comme les graphiques ça. En théorie il faut 2 heures pour créer un composant qui dessine une courbe à l'écran. Sauf que ça prend 2 semaines.
 

Citation :


Ensuite, en ce qui concerne les langages:
 - C++ peut utiliser GTKmm pour avoir une API C++ (et de toute façons, rien n'empêche d'utiliser une API C en C++, si ce n'est des convictions religieuses un peu déplacées ;)


les char * moi ça me rebute bien.
 

Citation :


 - .NET est TRES TRES TRES simple à manier, et marche très bien en C++ (standard ou managed). C'est pas pour rien si Microsoft a embauché Herb Sutter.


Ce même Herb n'a pas de complexe à dire que l'actuel Managed C++ est une grosse bouse (il a été embauché une fois que c'était plus ou moins fait il me semble). Et faudrait que tu m'expliques comment tu fais du .Net en C++ standard. Faut être un peu mazo pour utiliser MC++ à la place de C#. Dejà que sans le M, mais en plus faut pourrir son code de __gc, etc...


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 07-11-2004 à 09:18:39   

Reply

Marsh Posté le 07-11-2004 à 09:47:24    

HelloWorld a écrit :

C'est comme les graphiques ça. En théorie il faut 2 heures pour créer un composant qui dessine une courbe à l'écran. Sauf que ça prend 2 semaines.


 
Meuh non. Ca va très vite si tu n'es pas perfectionniste, et si tu sais à l'avance ce que tu veux.  
 
 

Citation :

les char * moi ça me rebute bien.


 
C'est pas le pire. Avec wxWidgets, il faut utiliser malloc pour qu'il puisse faire des free derrière :)
 
 

Citation :

Et faudrait que tu m'expliques comment tu fais du .Net en C++ standard. Faut être un peu mazo pour utiliser MC++ à la place de C#. Dejà que sans le M, mais en plus faut pourrir son code de __gc, etc...


Je regarderai. Je me souviens avoir écris une petite app il y a 1 ou 2 ans en C++ standard, et ça m'avait pas paru terrible. J'ai peut-être fait abstraction du __gc depuis (une sorte d'amnésie sélective aux horreurs qu'imposent Microsoft).
 
Maintenant, c'est peut-être laid, mais ce sont les façons de faire standard sous Windows. Et à la limite, avec les MFC c'était pire...

Reply

Marsh Posté le 07-11-2004 à 10:52:06    

Citation :

C'est pas le pire. Avec wxWidgets, il faut utiliser malloc pour qu'il puisse faire des free derrière :)


Tiens...j'y avais touché un peu, j'ai jamais vu ça. A quel niveau ?
 

Citation :

Je regarderai. Je me souviens avoir écris une petite app il y a 1 ou 2 ans en C++ standard, et ça m'avait pas paru terrible. J'ai peut-être fait abstraction du __gc depuis (une sorte d'amnésie sélective aux horreurs qu'imposent Microsoft).


La prochaine version s'annonce pas mal du tout. La stl semble bcp mieux intégrée (stdcli). Mais je ne suis pas parvenu à tester les exemples de Herb à ce sujet. Sinon faut c'est quand même conseillé d'utiliser System::String, etc..., et c'est pas standard. De toutes façon GUI ne rime pas avec standard.
 

Citation :

Maintenant, c'est peut-être laid, mais ce sont les façons de faire standard sous Windows. Et à la limite, avec les MFC c'était pire...


L'API .Net est clairement mieux fouttue que les MFC. En revanche MC++ c'est vraiment une horreur. C'est fait pour créer des wrappers / ponts entre le .Net classique (C#, VB, ...) et le C++ standard, pas pour être utilisé comme du C#. Avec C++ CLI c'est une autre histoire.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 07-11-2004 à 11:21:55    

Merci pour vos réponses.  
 
Pour répondre à quelques questions posées :  
 
Je me suis fait prêter la version Qt 3.3.3 pour Windows mais j'ai même pas pu passer la phase compilation de Qt, que ce soit avec le compilo Visual ou g++ .  
 
La version d'évaluation a pu être compilée quant à elle, et j'ai pu réaliser une appli après quelques modifs du genre :
- remplacer "template < typename T >" par template "< class T  >" dans les fichiers générés par Qt car Visual n'apprécie pas.
- modifier le nom d'une lib ( mt333eval.lib  par mt333.lib)
 
J'en arrive à me demander si Trolltech vérifie ou non que ses programmes sont corrects sous Windows avant de les proposer.  
 
Bref, dommage pour Qt, ca me tentait bien.  
 
Pour devcpp + WxWidgets, j'ai téléchargé la version DevCpp avec WxWidgets intégré ( Wx-Dev cpp). Je lance un nouveau projet "Application WxWidgets", je compile gentiment le template de base. J'obtiens alors plein d'erreurs de compilation. De plus, DevCpp s'y met lui aussi de temps en temps avec des plantages. Bref, j'ai vite passé mon chemin. Et puis le peu que j'en ai vu me fait me demander si il est plus agréable que MFC à utiliser.
 
Dessiner mes contrôles, ca sera le cas si je ne trouve pas d'autre solution, mais comme le dit HelloWorld, ca risque de me prendre beaucoup de temps dans la pratique.  
 
J'ai fait un tour sur des sites comme Codeguru et je suis quand même étonné que personne n'ait réalisé de custom control pour faire un compte tours. Ca me laisse penser que réaliser ses propres contrôles sous MFC est laborieux.  
 
Je vais me pencher du côté de .NET, d'autant plus qu'il m'est disponible. J'ai vu qu'il y avait une extension ASP.NET nommée Dundas Gauge qui proposait des compteurs de toute beauté...mais à 700$  :sarcastic: .
 
Sinon, vous me parlez de C++ Managed , C#, VB.NET, je suis un peu perdu avec tout ça  :sweat:

Reply

Marsh Posté le 14-11-2004 à 16:52:00    

Bon, je signale que j'ai réussi a installer correctement Qt 3.3.3 sous Windows avec Visual .NET .
Pour ceux qui ont des problèmes, il est nécessaire de rajouter des chemins d'accès dans les variables d'environnement de Windows XP.  
 
Pour Visual .NET , il est nécessaire d'avoir :
 

Citation :

Include :  
C:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\include;C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include;C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include
 
Lib:
C:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\Lib;C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Lib;C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib
 
Path:
C:\Qt\3.3.3\bin;C:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin;C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\IDE;C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin;C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\Tools\Bin


 
Tous ces chemins d'accès tiennent compte du fait que vous avez installé Qt et Visual.NET avec les chemins par défaut, et sont évidemment à adapter si ce n'est pas le cas.


Message édité par Blakstaf le 14-11-2004 à 16:52:59
Reply

Marsh Posté le 14-11-2004 à 16:59:18    

Ah oui. Mais il ne faut pas le faire à la main. Ouvre cmd.exe, execute C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin\vcvars32.bat puis lance l'installeur Qt depuis cette même console et ça roule...

Reply

Marsh Posté le 14-11-2004 à 17:44:17    

HelloWorld a écrit :

Ah oui. Mais il ne faut pas le faire à la main. Ouvre cmd.exe, execute C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin\vcvars32.bat puis lance l'installeur Qt depuis cette même console et ça roule...


 
 :sweat:  
La prochaine fois, je me prendrai moins la tête

Reply

Marsh Posté le 15-11-2004 à 17:49:05    

Salut,
utiliser wxWidgets mais prendre je crois (dev-cpp 4.9.8) sinon ça marche nickel, gratuit, à conseiller (je n'utilise que cela)
A+
 
PS pour faire un nouveau control faire une classe dérivée de wxControl et refaire l'événement (à connecter statiquement ou dynamiquement) Onpaint pour redessiner le contrôle. Rajouter gestion de souris+événements perso du contrôle.

Reply

Marsh Posté le 15-11-2004 à 22:26:16    

blakstaf a écrit :

Merci pour vos réponses.  
 
Pour répondre à quelques questions posées :  
 
Je me suis fait prêter la version Qt 3.3.3 pour Windows mais j'ai même pas pu passer la phase compilation de Qt, que ce soit avec le compilo Visual ou g++ .  
 
La version d'évaluation a pu être compilée quant à elle, et j'ai pu réaliser une appli après quelques modifs du genre :
- remplacer "template < typename T >" par template "< class T  >" dans les fichiers générés par Qt car Visual n'apprécie pas.
- modifier le nom d'une lib ( mt333eval.lib  par mt333.lib)
 
J'en arrive à me demander si Trolltech vérifie ou non que ses programmes sont corrects sous Windows avant de les proposer.  
 
Bref, dommage pour Qt, ca me tentait bien.  
 
Pour devcpp + WxWidgets, j'ai téléchargé la version DevCpp avec WxWidgets intégré ( Wx-Dev cpp). Je lance un nouveau projet "Application WxWidgets", je compile gentiment le template de base. J'obtiens alors plein d'erreurs de compilation. De plus, DevCpp s'y met lui aussi de temps en temps avec des plantages. Bref, j'ai vite passé mon chemin. Et puis le peu que j'en ai vu me fait me demander si il est plus agréable que MFC à utiliser.
 
Dessiner mes contrôles, ca sera le cas si je ne trouve pas d'autre solution, mais comme le dit HelloWorld, ca risque de me prendre beaucoup de temps dans la pratique.  
 
J'ai fait un tour sur des sites comme Codeguru et je suis quand même étonné que personne n'ait réalisé de custom control pour faire un compte tours. Ca me laisse penser que réaliser ses propres contrôles sous MFC est laborieux.  
 
Sinon, vous me parlez de C++ Managed , C#, VB.NET, je suis un peu perdu avec tout ça  :sweat:


 
A mort les MFC.  [:itm]  
 
Peut-être que toute la gestion des controles et de l'IHM pourrait être faite en Flash ? (juste une idée, comme ça, j'ai pas la moindre idée si c'est viable/faisable)


Message édité par el muchacho le 15-11-2004 à 22:28:34
Reply

Marsh Posté le 17-11-2004 à 15:03:51    

C'est faisable via un contrôle ActiveX. Y'a même des jeux qui utilisent flash pour leurs menus.

Reply

Sujets relatifs:

Leave a Replay

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