APPLICATION BASÉE BOITE DE DIALOGUE SANS RESSOURCES

Messages postés
69
Date d'inscription
samedi 6 septembre 2003
Statut
Membre
Dernière intervention
19 octobre 2005
- - Dernière réponse : racpp
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
- 28 nov. 2006 à 00:22
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/26264-application-basee-boite-de-dialogue-sans-ressources

racpp
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
8 -
Tu peux t'inspirer de mon code sur la couleur dans les controles:
http://www.cppfrance.com/code.aspx?ID=27889
cs_Omeya
Messages postés
28
Date d'inscription
dimanche 4 mai 2003
Statut
Membre
Dernière intervention
10 août 2006
-
Merci, je l'avais complètement oublié lol! En fait, je n'avais pas remarqué que le WS_TABSTOP n'était pas spécifié dans ton code.

Je cherche aussi un moyen de changer la couleur du texte des boutons. Si par hasard tu pouvais donner un bout de code, ce serait très sympa :)
J'ai déjà un bout de code, perso, mais il est pas très propre. Je te le posterai demain soir si je peux tout en sachant que ta version pourrait être nettement meilleure.
racpp
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
8 -
Salut,
Il suffit d'ajouter le style WS_TABSTOP au controle.
cs_Omeya
Messages postés
28
Date d'inscription
dimanche 4 mai 2003
Statut
Membre
Dernière intervention
10 août 2006
-
Salut,

Comment fait-on pour passer d'un contrôle à un autre avec la touche TAB? Ca ne marche pas dans cette source :(
Sinon, très bonne source. Ca mérite un bon 10 :)
deck_bsd
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
1 -
RACPP ... tu est mon sauveur. j'ai chercher PARTOUT après un exemple claire pour crée une dialogbox SANS RESSOURCE. C'est source est une aide précieuse pour moi. Et continue a nier les ressource :D je suis de tous coeur avec toi. Me too je veu pas utiliser les ressources ( en mm temps j'ai pas le choix , elles bug, mais je suis pas mécontent).

Encore merci pour cette source.
cs_Xaviou
Messages postés
154
Date d'inscription
dimanche 1 avril 2001
Statut
Membre
Dernière intervention
2 octobre 2009
-
ça m'a l'air bien tout ça !...

c'est peut-être la solution pour mettre des 'resources' de style dialog dans une lib statique (car si mes souvenirs sont exacts, il n'est pas possible de placer des ressources proprement dites dans une telle librairie)
cs_Nebula
Messages postés
790
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
7 juin 2007
1 -
Un seul mot : Génial !
MasterShadows
Messages postés
268
Date d'inscription
lundi 1 mars 2004
Statut
Membre
Dernière intervention
19 avril 2012
10 -
Merci bien Magic_Nono et racpp , on va aller étudier tout ca et je réécrirais totelement le prog...
D'ici demain vous aurez la version du programme dont j'ai parlé pour vous faire une idée du soft que je prépare.
Allez @+
magic_Nono
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
1 -
alors, inscrit chaque controle dans une fenetre différentes, C bcp plus pratique...

Je met à jour MP sur le site ftp donné en lien ds la page de MétaProg
ça te donnera une idée de gestion d'onglets...

très facile à gérer et à modifier en étant totalement i ndépendantes les unes des autres...

++
racpp
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
8 -
MasterShadows > Mon programme des dix onglets est assez long et complexe car il gère une base de données elle aussi complexe. Je vais très bienôt poster un source plus clair, simple et surtout focalisé sur la création d'onglets 100% API (sans ressources). En attendant, voici des sources sur les onglets dans une boite de dialogue créés avec l'éditeur de ressources (sans MFC):
http://www.cppfrance.com/code.aspx?ID=16835
http://www.cppfrance.com/code.aspx?ID=20182
MasterShadows
Messages postés
268
Date d'inscription
lundi 1 mars 2004
Statut
Membre
Dernière intervention
19 avril 2012
10 -
racpp > Ton idée d'onglet a du bon, je dirais même qu'elle est excellente car cela me permettrait d'avoir plus de place pour le tracer de graphes.
Cependant, cela ne fais pas excessivement longtemps que je programme sans les MFC, il me faudrait donc que tu me donne le code source du programme de tes dix onglets pour avoir un exemple de codification des onglets.
Quand au code source je la posterais cette semaine.
Mais de toute façon, elle subira une refonte totale...
Allez @+
racpp
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
8 -
MasterShadows > L'utilisation de beaucoup de boites de dialogues dans une application n'est pas toujours très pratique. Personnellement, dans un programme comme le tien, je préfère utiliser des onglets (Tab Control). Cela permet de supporter un grand nombre de contrôles (boutons, statics, edits, etc...) dans une même boite de dialogue. En cliquant sur l'onglet voulu (calculatrice, rapport, graph etc...) on montre les contrôles voulus et on cache les autres. J'avais fait une application contenant 10 onglets contenant chacun pas moins de 15 contrôles. Ca fonctionne sans le moindre problème. En attendant de voir ton code source, j'espère que la solution des onglets t'est convenable.
MasterShadows
Messages postés
268
Date d'inscription
lundi 1 mars 2004
Statut
Membre
Dernière intervention
19 avril 2012
10 -
racpp >> Ben, en fait je suis en train d'écrire un programme qui permettrait à terme de tracer des fonctions polynomiales, des rendements et d'autres styles de courbes. Pour cela il me fallait créer une boite dialogue principale, puis une boite dialogue calculatrice, une boite dialogue de rapport, une bdd de graphe et d'autres dans ce style (6 boites de dialogue au total).
Cependant je les avait créer mais il m'était impossible de les mettre en WS_OVERLAPPEDWINDOW sinon bonjour les bugs, car j'aurais aimé faire comme les activations/désactivations de fenêtre (style vc++ 6).
Mais pour plus de clarté je posterais la source bien qu'elle ne soit (et de loin) pas finie, pour que tu vois ce que je voudrais
magic_Nono
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
1 -
j'ai posté un msg sur le forum il y a qq tps, le but est de faire un formulaire dynamique, je m'y colle depuis un certain tps, & vive le Petz

si qqn ve donner un coup de pouce...

++
Nono.
racpp
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
8 -
Merci beaucoup chers amis,
Ca fait toujours plaisir d'entendre quelqu'un qui apprécie ce qu'on fait. Ca m'encourage à penser à d'autres trouvailles à partager.
A très bientot.
leprov
Messages postés
1160
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
21 octobre 2010
15 -
bravo pr le code, tres instructif, 10/10 sans complexe, car meme si ce code est tres simple a comprendre, je savais pas comment faire ce genre de choses, et ca ferait presque un bon tuto.
c'est vrai que je suis d'accord que l'editeur de ressources te donne limpression de pas programmer et de faire completement autre chose, mais y'a quand meme parfois un gain de temps assez significatifs (contre une perte de qualité c'est vrai...moins de précisions ds le graphisme, meme si c'est pas forcément important, etc.....)
en tous les cas, tres pratique, alors je dis bravo et merci
racpp
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
8 -
vecchio56 > Pour créer une boite de dialogue comme interface d'une application, il y'a deux façons. DialogBox() et DialogBoxIndirect(). DialogBox crée la boite selon les paramètres enregistrés dans l'EXE comme ressource. DialogBoxIndirect fait la même chose mais en cherchant ces paramètres dans une zone de la mémoire. Ce qui nous permet de définir les paramètres pendant l'exécution de l'application avant même l'affichage de la boite. Bref, grâce à cette méthode, on maitrise mieux notre boite. Entre une boite de dialogue et une fenêtre normale il y'a beaucoup de différences. Avec une boite de dialogue, on a juste besoin d'allouer un peu de mémoire pour la dialog template, définir les propriétés de la boite et enfin la lancer. Pour la fenêtre, c'est autre chose. Il faudra définir tous les membres de la classe. Regarde bien le source de monsieur Arnotic, il a dû définir des membres inutiles comme l'icone, le curseur, la couleur de fond, le nom de la classe etc... il a dû faire appel à des fonctions comme LoadIcon(), LoadCursor(), RegisterClassEx() ShowWindow() UpdateWindow(). Pour gérer les messages il a dû employer les fonctions LoadAccelerators(), GetMessage(), TranslateAccelerator(), TranslateMessage(), DispatchMessage(). C'est toujours ainsi avec les fenêtres normales. Alors qu'on n'a pas besoin de tout cela avec une boite de dialogue. Création simple et gestion des messages autonome. Si tu préfères utiliser l'éditeur de ressources c'est ton choix. Franchement, et je ne suis pas le seul à le penser, quand je travaille avec l'éditeur de ressources, j'ai l'impression d'être en train de faire autre chose que la programmation. C'est frustrant et limite beaucoup la maitrise de la programmation de l'application.
A+
vecchio56
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7 -
L'avantage des dialog est pourtant l'utilisation de l'éditeur des ressources... Sinon c'est quasiment pareil que de créer une fenêtre normale, à l'exception qu'on n'enregistre pas de classe...
racpp
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
8 -
MasterShadows > Dans mon source, la boite de dialogue est le support principal de l'application. A partir de la procédure de cette boite principale, et de ses événements, tu peux créer autant d'autres boites que tu veux et les afficher à la fois. N'oublie surtout pas d'implémenter une procédure pour chacune d'elles afin de bien gérer les messages. Il faut rappeler aussi que la fonction DialogBoxIndirect() est bloquante. Le programme appelant attend que la boite soit fermée.
Tu peux donner d'autres précisions? Car je me demande à quoi peut servir d'afficher toutes les boites à la fois.
vecchio56
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7 -
oui désolé!
MasterShadows
Messages postés
268
Date d'inscription
lundi 1 mars 2004
Statut
Membre
Dernière intervention
19 avril 2012
10 -
10 / 10 . Franchement bien.
Cependant, question : peut on programmer plusieurs boîtes de dialogue de ce type et les faire afficher en même temps ???
racpp
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
8 -
vecchio56 > En tous cas merci pour le rappel. Je suis sûr que tu n'avais pas pris le temps de comparer les deux sources.
A+
racpp
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
8 -
vecchio56 > Oui mais c'est pas du tout la même chose. La méthode utilisée est tout à fait différente. Monsieur Arnotic a fait appel à la fonction CreateWindowEx() pour créer une fenêtre normale ayant l'apparence d'une boite de dialogue. Ce qui présente quelques inconvénients. Déjà la présence de l'icone à côté du nom prouve que ce n'est pas une vraie boite de dialogue. Dans mon source, j'utilise la fonction DialogBoxIndirect() pour créer une vraie boite de dialogue, plus facile à réaliser et surtout plus souple dans son fonctionnement.
vecchio56
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7 -
Deja fait par monsieur Arnotic:
http://www.cppfrance.com/code.aspx?id=25149
scolinks
Messages postés
69
Date d'inscription
samedi 6 septembre 2003
Statut
Membre
Dernière intervention
19 octobre 2005
-
10 sur 10... Tres pratique...