Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

TUTORIAL WIN32 :


Information sur la source

Catégorie :Tutoriaux Niveau : Débutant Date de création : 31/05/2004 Date de mise à jour : 09/09/2005 00:09:03 Vu / téléchargé: 19 130 / 4 325

Note :
9,72 / 10 - par 25 personnes
9,72 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (85)
Ajouter un commentaire et/ou une note

Description

Suite aux conseils ;  j'ai mis toutes les  parties dans le meme zip
et continuerai par des mises a jour

Sommaire actuel :

                 1) Création d'une fenêtre windows simple.
                                    
                 2) Création d'un menu
            
                   - a) Menu déroulant (Pop Up)
                
                   - b) Menu non déroulant (non Pop Up.)
                    
                   - c) Menu créé sans fichier ressource.
                            
                 3) Le "Device Contexte" (DC)
            
                   - a) Afficher du texte dans une fenêtre.

                  -  b) Dessiner dans une fenêtre.
                                  (Etude d'un projet : une horloge analogique.)

                  - c) Dessiner dans une fenêtre (Les principales fonctions.)

                  - d) Chemin et decoupe

                  4) Boites de dialogue et contrôles.
                  
                    a) Fenêtres enfants et contrôles BUTTON, STATIC et EDIT.

                    b) Boites de dialogues, contrôles SCROLLBAR et LISTBOX
                                
                     5) Gestion du clavier et de la souris
            
                     a) Gestion du clavier et déplacement de la vue dans
                         une fenêtre (Styles  WS_VSCROLL et WS_HSCROLL)

                          b) Les accélérateurs de clavier.

                          c) Accélérateur clavier créé sans fichier ressource.
                                
                          d) Le signe d'insertion (caret).

                          e) La souris.

                    

********************************************************************************************  

Toutes les parties sont dans des zips séparés.

Mise à jour  du 7 Juin 2004 : - Modification des commentaires des parties 1, 2a, 2b, 2c.

                              - Ajout sur la partie 3a (Modes de tracés)

Mise à jour du 14 Juin 2004 : - Ajout de la partie 3b.

Mise à jour du 30 Juil 2004 : - Ajout de la partie 3c.

Mise à jour du 20 Oct 2004  : - Ajout de la partie 4a.

Mise à jour du 06 Déc 2004  : - Ajout de la partie 4b.

Mise à jour du 22 Déc 2004 : - Modification des commentaires des parties 2a et 2b.
                               (Explications sur l'initialisation d'un menu.)

Mise à jour du 19 Janv 05 : - Ajout de la partie 5a.

Mise à jour du 26  Janv 05 : - Ajout des  parties 5b et  5c.

Mise à jour du 04 Fév 05 : - Ajout partie 5d et ajout d'un chapitre qui contiendra à terme plusieurs
                                                parties et traite de win32 avec l' utilisation de classes (Le . zip est nommé :
                                                Classe.zip; la première partie reprend la création d'une fenêtre simple.)


Mise à jour du : 09 Fév 05 : - Le fichier étant trop gros, j'ai reporté toute la partie 6 dans le code
                                             Tutorial Win 32  2ème partie. Afin de conserver de la place
                                              pour les mises à jour que j'aurais à faire sur la première partie,
                                                 (gestion de la souris ...)

Mise à jour du 29 Avr 05 : - Ajout partie 5e et ajout dans la partie 5a de la fonction keybd_event.

Mise  à jour du 09 Sept 05 : Ajout partie 3d.




 

Conclusion

Prochaine mise a jour dans cette source : Region et decoupe
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  • Classe.zipTélécharger ce fichier [Réservé aux membres club]20 335 octets
  • Sommaire.txtTélécharger ce fichier [Réservé aux membres club]Voir ce fichier3 717 octets
  • Tutor_Win_32_Part_2a.zipTélécharger ce fichier [Réservé aux membres club]25 276 octets
  • Tutor_Win_32_Part_2b.zipTélécharger ce fichier [Réservé aux membres club]24 912 octets
  • Tutor_Win_32_Part_2c.zipTélécharger ce fichier [Réservé aux membres club]17 839 octets
  • Tutor_Win_32_Part_3a.zipTélécharger ce fichier [Réservé aux membres club]31 464 octets
  • Tutor_Win_32_Part_3b.zipTélécharger ce fichier [Réservé aux membres club]32 312 octets
  • Tutor_Win_32_Part_3c.zipTélécharger ce fichier [Réservé aux membres club]49 283 octets
  • Tutor_Win_32_Part_3d.zipTélécharger ce fichier [Réservé aux membres club]21 281 octets
  • Tutor_Win_32_Part_4a.zipTélécharger ce fichier [Réservé aux membres club]43 811 octets
  • Tutor_Win_32_Part_4b.zipTélécharger ce fichier [Réservé aux membres club]62 769 octets
  • Tutor_Win_32_Part_5a.zipTélécharger ce fichier [Réservé aux membres club]31 790 octets
  • Tutor_Win_32_Part_5b.ZIPTélécharger ce fichier [Réservé aux membres club]21 422 octets
  • Tutor_Win_32_Part_5c.zipTélécharger ce fichier [Réservé aux membres club]17 095 octets
  • Tutor_Win_32_Part_5d.zipTélécharger ce fichier [Réservé aux membres club]21 283 octets
  • Tutor_Win_32_Part_5e.zipTélécharger ce fichier [Réservé aux membres club]18 943 octets
  • Tutor_Win32_Part_1.zipTélécharger ce fichier [Réservé aux membres club]25 526 octets

Télécharger le zip

Historique

05 août 2004 00:16:24 :
20 octobre 2004 23:22:58 :
20 octobre 2004 23:30:53 :
10 décembre 2004 11:38:37 :
10 décembre 2004 11:49:38 :
22 décembre 2004 09:59:20 :
19 janvier 2005 23:07:01 :
26 janvier 2005 22:20:35 :
04 février 2005 22:03:10 :
05 mars 2005 22:17:42 :
08 mars 2005 23:21:28 :
24 mars 2005 23:11:49 :
09 avril 2005 21:32:08 :
29 avril 2005 15:18:03 :
09 septembre 2005 00:09:05 :
Ajout partie 3d : Chemin et decoupe.

Commentaires et avis

signaler à un administrateur
Commentaire de Xs le 01/06/2004 23:27:00

J'ai une idée : je vais poster ma prochaine source (elle sera grosse) en plusieurs sous-sources comme ca ca fera péter mon compteur de sources, même si ca sert a rien.

Ah je me suis trompé d'endroit pour le dire ? Je suis pas sur msn la ?
Mince....

Plus serieusement, evite de faire 300 sources différentes pour je ne sais qu'elle raisons : toute les 3-x et y-x tu les regroupes en une seule ! Tu pourrais même faire patienter un peu et tout regrouper dans une SEULE. Tellement plus pratique....

signaler à un administrateur
Commentaire de Urgo le 02/06/2004 00:05:10

C'est vrai que la partie 2 aurait pu etre regroupé dans un meme fichier zip, tout en montrant trois parties distinctes à l'intérieur.

signaler à un administrateur
Commentaire de errikke le 02/06/2004 19:49:35

eh oui, vous avez raison ; pourquoi perdre son temps, alors que dehors les arbres poussent
et les filles sont belles!

Plus serieusement, je  vais arreter ici ... mais pour une raison evidente ...

signaler à un administrateur
Commentaire de Xs le 02/06/2004 19:55:28

Tss faut pas se vexer ! Tes tutoriaux sont très bien et respectent bien l'idée du site. C'etait une remarque sans importance : j'aime dire ce que je pense.

Il ne faut pas tout prendre à la lettre !

Cordialement.

ps : on attend tous avec impatience teS futures sources !

signaler à un administrateur
Commentaire de Funto66 le 05/06/2004 11:57:19

Aïe, j'avais peur que tu t'arrêtes, je l'avais déjà dit dans un des 1ers msg du 1er tutorial...
J'espère juste que tu vas pas finir comme ça ^^

signaler à un administrateur
Commentaire de Urgo le 05/06/2004 21:05:30

Si tu n'acceptes meme pas ma remarque qui a été tout à correcte et pas du tout désobligeante, c'est en effet pas mal la peine de continuer. Ce n'est pas parce-que tu n'as pas de note ou que je ne parle pas de ton source, que cela veut dire que je rejette ton travail.

Continu (pour les autres au moins), ça leur fait plaisir même s'ils ne l'expriment pas dans directement dans les commentaires ou une note.

signaler à un administrateur
Commentaire de errikke le 07/06/2004 07:46:17

Urgo ->  Je te prie de m'excuser ; simplement tu est tombe sur un mauvais jour ou tout le monde
me renvoyait dans les cordes ... au boulot, a la maison .., et meme sur CPPFRANCE.
Je vais continuer et meme prendre en compte ta remarque ; je procederais maintenant par mise a jour.
simplement, je suis oblige de continuer sur plusieurs parties (cette fois dans le meme zip) pour ne
pas avoir des codes ingerable ou je n'ai meme pas la place sur l'ecran d'afficher tous les exemples.
A+

signaler à un administrateur
Commentaire de Urgo le 11/06/2004 21:18:14

J'suis content que le message soit passé ;)
Merci de ta compréhension

signaler à un administrateur
Commentaire de wolfcyber le 14/06/2004 20:24:39

Pas mal ce tutorial, 8/10

signaler à un administrateur
Commentaire de arouche le 23/06/2004 17:09:42

Débutant en C++, mais question va peut etre paraitre conne pour certain, mais quel type de projet faut il créer ??

signaler à un administrateur
Commentaire de Funto66 le 23/06/2004 22:39:54

Avant de poser ce genre de questions, dis quel est ton environnement de dév.
Pour Visual C++ : Win32 Application
Pour Dev-C++ : Windows Application.

signaler à un administrateur
Commentaire de detlev le 13/08/2004 21:05:52

salut,
c bien chouette tout ca ! mais comment fait-on pour creer un simple bouton avec l'api win32 ?
on parle toujours d'opengl et de directX mais un simple bouton ou un label je ne trouve pas de tuto.
vous pouriez m'aider ?
ps: un bon livre ca va aussi.

signaler à un administrateur
Commentaire de Bebert251188 le 14/08/2004 17:02:10

slt
g telechargé ce tuto, il est vraiment bien(pour le peu que g deja lu) (et aussi vraiment long !!!)
mais , g devC++ et qd je compile les parties ou lon cré des menus (deroulants et pas)
et bien il arrive a le compiler mais lorsqu'il se lance , je vois la fenetre , mais un msg me dit de supprimer des fichiers : *_private.h et .rc
que je ne trouve pas, pourriez vous m'aider?
merci d'avance

signaler à un administrateur
Commentaire de errikke le 31/08/2004 09:37:27

--> detlev : Je n'ai pas encore aborde les boites de dialogues (bouton...) qui feront l'objet de la
prochaine partie.

--> Bebert251188 : Quand tu ouvre un projet ; il faut selectionner dans la boite de dialogue  en liste
deroulante nommee Type,  l'option All Files(*.*)  ainsi tu verras tous les fichiers (dont les private_) tu
peut les supprimer avec un click droit sur le nom du fichier.

Pour aller plus vite ; tu peut recuperer le livre de Charles PETZLOD sur le site de Brunews.

signaler à un administrateur
Commentaire de jaco_2004 le 02/09/2004 04:45:45

Salut Errikke,

Je suis debutant en programation Windows sous C++. Eleve ingenieur en mecanique, je suis actuelement en stage dans une universite dans le Colorado et mon sujet de stage est la programation d'un logiciel d'analyse de contrainte. Ce logiciel doit etre programme en C++, et integrer une interface Windows...

Je me suis pas mal documente sur internet sur le sujet avant de me lancer dans la bagarre, et c'est ton tuto que j'ai choisi pour debuter !

Il est clair, complet (enfin pour un debutant comme moi), pedagogique...

Voila, c'etait juste pour te remercier, et par la meme remercier les administrateurs de ce site. Bon, et puis comme je viens de commencer et que j'en ai pour cinq mois de programmation (ce qui n'est pas mon dada normalement), je sens que je vais faire appel a vous dans pas longtemp pour resoudre mes problemes de programmation !

Donc ca fait pas de mal de vous passer un peu de pommade :)

Allez, je m'arrete la,

ciao,

Jaco

P.S.: exusez-moi pour les accents, les cedilles et compagnie mais les claviers qwerty... enfin vous savez.

signaler à un administrateur
Commentaire de errikke le 21/10/2004 19:55:51

Pour ceux qui ont rencontre un pb dans la partie 2a avec le menu :
Je pense avoir trouve la solution .

Il faut  remplacer dans le fichier .rc
la ligne : 500 MENU DISCARDABLE
Par : ID_MENU MENU DISCARDABLE

Merci de me dire si cela marche; je ferais une mise a jour.

signaler à un administrateur
Commentaire de Silverd le 27/10/2004 15:23:51

    Bonjour, je suis un jeune programmeur en C et en C++ et veritable débutant pour la création de fenêtre avec win 32.
Ce tutorial a l'air très bien expliquer et j'espère pas trop dur à comprendre pour moi :)

Mais j'ai quand même un petit problème pour ce tutorial :
      Aucune source ne veut bien compiler
(alors que les exécutable fournit dans le zip marche très bien)
Par exemple pour la partie 4a, le compilateur ne trouve pas la fonction _itoa() utilisé pour la première fois à la ligne 2365 !
Donc si quelqu'un peut m'aider , ba il est le bienvenu :)

ps : j'utilise dev c++ v4 , si ca peut aider à la compréhension du problème :-D

signaler à un administrateur
Commentaire de Propheus le 05/12/2004 18:45:46

Hello :)

Je trouve le tuto très intéressant, c'est ce qu'il me fallait pour bien aborder le contexte de fenêtres en C++ (me suis taper beaucoup en mode console).

Toute fois trois critiques qui aura le mérite de rendre ça un peu plus paufiné:

- Placer toutes la partie théorique en commentaire c'est vraiment moyen moyen, ça rends le code à proprement parlé très indigeste, et le compilateur perd un peu de temps à trier tout ça.

- J'ai la version DevC++ pareil que celle que tu as utilisée, je viens de finir la première partie et elle ne se compile pas. Beaucoup de références introuvables, je pense qu'il me faut encore faire quelques règlage sur le compilateur et mes connaissances à ce niveau.

- Et finalement, Aujourd'hui l'ont parle encore du C++ avec des strucs et autres pratiques "à la vielle école", je trouve ça dommage, encapsuler tout ça dans une classe aurait été très enrichissant et à la pointe du C++ orienté objet.

Je sais que pour le coté POO c'est presque un autre tuto, mais je trouve que l'ont voit encore trop de source avec un tas de strucs, sans implémentation orienté objet, et ceci en parlant de C++. Je sais que l'ont peux faire du C++ sans forcément utiliser l'orienté objet à 100%,mais c'est dommage de ne pas vivre avec notre temps.

Avis perso, ça n'enguage que moi.

signaler à un administrateur
Commentaire de Funto66 le 05/12/2004 22:07:50

D'un autre côté, un tutoriel destiné aux débutants et qui de plus ne doit expliquer que l'API Windows, qui est en C, je trouve normal qu'il reste avec les vieilles pratiques...
Pour la compréhension, on ne rajoute pas de choses inutiles.

C'est mon avis.

signaler à un administrateur
Commentaire de errikke le 06/12/2004 09:42:07

--> Propheus : Tu as effectivement souligne trois points qui m'ont pose probleme
des le debut.

- L'encapsulation  des donnes sous forme de classe m'a tente des le debut, toutefois, je ne
souhaitais pas reinventer les MFC (Il faudrait d'ailleurs etre plus doue que je ne le suis), c'est
pourquoi, j'ai prefere me contenter d'une utilisation "vieillotte" de l'API. J'ai prevu de
"deriver" vers les classes au fur et a mesure de mes parties, mais pas avant d'avoir fini
les  bases, c a d le systeme de fichier, les icones et bitmaps et une premiere approche du
multithreading.

- Les commentaires : J'ai adopte la methode suivante ; toutes les premieres parties sont
commentes au fil du code, puis petit a petit , quand le lecteur commencera a etre familiarise avec
l'API, (somme toute les fonctions et messages  fonctionnent tous plus ou moins de la meme
facon), les commentaires seront regroupes en debut de code. Ce sera d'ailleurs le cas
de la prochaine partie (boites de dialogue   modale ou non et controles SCROLLBAR et
LISTBOX), que je pense  poster cette  semaine.

-Pour les compilateurs, je n'ai pas encore trouve de solution, je ne prevoie pas de tut
sur le makefile dans l'immediat.


--> Funto66 : je te remercie pour la constance de ton soutien, alors meme.
(j'ai vu tes sources) que tu ai largement plus avance que ce que je propose dans
mon tutoriel.

Merci a tous deux.

signaler à un administrateur
Commentaire de BruNews le 06/12/2004 10:29:43 administrateur CS

Salut,

le titre est pourtant bien clair: "TUTORIAL WIN32".
Il ne s'agit pas ici de choix de langage mais d'expliquer une API, rien de tel que le C pour faire cela clairement.
'vivre avec notre temps' ??? en ce cas faut faire du .NET et tu auras une fenetre en 3 clics sur un wizzard sans ecrire une ligne de code.

ciao...

signaler à un administrateur
Commentaire de Propheus le 06/12/2004 12:29:48

C'est bon j'ai reussi à compiler. C'étais de ma faute comme je l'avais présenti.

-> BruNews : Je comprends pas ta réaction l'air "vexé", il me semble que le C++ n'as pas besoin du .Net pour être orienté objet, les MFC sont plus vielles et si tu regarde le magnifique Framework du .NET, ben ils ont beaucoup été piocher dans les MFC.

Mais bref c'est pas le problème, je voyais pas ce tuto en MFC, ni en .NET, avec une simple encapsulation pour donner l'idée. C'est sur que ça sert à rien de réinventé la roule MFC ou .NET, ici on est là pour apprendre et pour enseigner du mieux que l'ont peux. Mais je comprends tout à fait le malaise, c'est la guerre des pros C et pro C++ OO, c'est tout rien de plus :)

signaler à un administrateur
Commentaire de BruNews le 06/12/2004 12:44:38 administrateur CS

non rassure toi, je ne voulais pas d'air 'vexé', juste faire comprendre que dans un tuto sur l'API, si le lecteur doit aller chercher où est caché le hwnd et se ballader entre 36 fichiers h et cpp pour retrouver ses petits, c'est des coups a faire fuir le debutant auquel un tuto doit s'adresser, rien de plus dans mes propos.

signaler à un administrateur
Commentaire de angeljp le 10/12/2004 17:35:49

Alors là franchement je dis bravo !!!
Moi qui ne savait pas du tout comment faire apparraître une fenêtre windows toute simple ya deux semaines, je peux maintenant faire une fenêtre avec tout ce qu'il faut !
Ce tutorial est certainement le meilleur que j'ai pu voir jusqu'à maintenant sur les API.
Encore Bravo et continue comme ça errikke !

signaler à un administrateur
Commentaire de The_Sin le 22/12/2004 14:36:21

Chez moi quand j'essaye de compiler ton tuto il me dit ça : undefined reference to `CreateSolidBrush@4'
:'(

signaler à un administrateur
Commentaire de Funto66 le 22/12/2004 15:37:17

T'as pas dû linker avec la lib GDI...
Si t'es sous Dev-C++, rajoute -lgdi32 aux options du linker (Propriétés du projet...), si t'es sous Visual C++ rajoute la lib gdi32.lib.

signaler à un administrateur
Commentaire de The_Sin le 22/12/2004 17:56:10

Merci:)
Par contre ça me laisse toujours la fenetre msdos derrière

signaler à un administrateur
Commentaire de Funto66 le 22/12/2004 18:44:25

Ça la fenêtre DOS c'est pas un pb, ça dépend de tex options de compil : si t'es sous Visual C++, cherche l'option "/subsystem:console" et remplace ça par "/subsystem:windows". Si t'es sous Dev-C++, alors dans les propriétés de ton projet, tu chosis Windows application au lieu de Console Application :)

signaler à un administrateur
Commentaire de marik7335 le 11/01/2005 22:52:12

Franchement, rien à dire
bravo
10/10

signaler à un administrateur
Commentaire de quentin2111 le 18/03/2005 23:03:00

Bonjour,
ca fait plusieurs semaines que j'apprends les bases en win32 grâçce à tes tuto.Ne t'arrête surtout pas !
10/10 sans hésiter !

signaler à un administrateur
Commentaire de valeryp le 31/03/2005 13:14:06

slt ton tutorial est genial ne t'arrete pas la
10/10

signaler à un administrateur
Commentaire de orc_undead le 04/04/2005 20:03:39

Bonjours a tous!! Je trouve ton tutorial vraiment super.
Seulement si je pouvais compiler une de tes sources!!! Voila, mon probleme c'est que je peux ouvrir les .EXE mais je ne peux pas compiler aucune des sources .. Il est donc dificile de comprendre comment sa marche sans pouvoir compiler quoi que se soit!! J'obtien 2 erreur dans le premier tutorial :

LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main

Debug/Tutor_Win32_Partie_1.exe : fatal error LNK1120: 1 unresolved externals

J'y comprend vraiment rien!! Merci d'avance!!

signaler à un administrateur
Commentaire de marik7335 le 06/04/2005 22:38:41

Essai de créer un autre projet win32 application et fais un copier coller du code.

signaler à un administrateur
Commentaire de errikke le 07/04/2005 19:44:34

Sous VC ++ il faut creer un projet Win 32 Application et non Win 32 Console Application.
L'erreur  LNK2001 peut  avoir diverses causes, mais dans ton cas, je pense que la
cause est la nature du projet.

signaler à un administrateur
Commentaire de orc_undead le 07/04/2005 21:17:37

Allo, Jai cree une nouvelle Win32 Application et jai faite un copier - coller du code . Apres avoir compiler, jai obtenu aucune erreur!! Mais il n'y a aucune fenetre qui s'execute au lancement du program.
Il est ou le problem!!???

signaler à un administrateur
Commentaire de errikke le 09/04/2005 20:47:34

Le problème que tu évoque a déjà été rencontré par quelqu'un.
Pour autant que je me rappelle, il avait réglé ce problème
en ne faisant pas un copier/coller mais en créant un projet et
en ajoutant directement au projet la (ou les) source(s) voulue(s).

Je n'ais pas réussi, pour l'instant, à créer ce problème chez moi pour
pouvoir l'étudier.

Peut tu modifier le code (il s'agit de la 1ère partie) comme suit :
autour de la fonction RegisterClassEx().
(là tu peut faire un  copier/coller.)

--------------------------------------------------------------------------------------------------------------------------------------
     SetLastError(0);


    if (RegisterClassEx (&wincl) == false) // On enregistre la classe déclarée
              //   return 0 ;                                   // avec WNDCLASSEX et en cas d'erreur
                                                                    // on quitte le programme
          {                                
          LPVOID lpMsgBuf;
          FormatMessage(
          FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM |
  FORMAT_MESSAGE_IGNORE_INSERTS, NULL, GetLastError(),
                                      MAKELANGID(LANG_FRENCH, SUBLANG_DEFAULT),
                                       (LPTSTR) &lpMsgBuf,0,NULL );

  MessageBox( hWnd, (LPCTSTR)lpMsgBuf, "Erreur existe ?",
                                      MB_OK | MB_ICONINFORMATION );
  LocalFree( lpMsgBuf );
          }    
          
    else {
    MessageBox(hWnd,"La classe est bien enregistrée, cliquez sur ok pour ouvrir la fenêtre",
                                            "Info de service",MB_OK);
         }
--------------------------------------------------------------------------------------------------------------------------------------
Ce bout de code devrait permettre de connaître exactement l'intitulé de l'erreur.

Merci de me le communiquer.


A+


signaler à un administrateur
Commentaire de orc_undead le 09/04/2005 21:46:45

Bonjour, j'ai faite un copier coller de ton code dans le projet qui optenaient les erreurs que jai mentionner puis le compilateur ne compile pas plus.. Ensuite jai essayer de cree un projet win32 application vide puis d'importer ta source du tutorial1 puis toute fonctionnait :). Pour finir .. j'ai essayer un copier coller de toute le code puis de le compiler ... mais cette fois, il n'y a eu aucune erreur puis la fenetre est apparue.. Alors l'important c que maintenant je peux apprendre :)
Merci d'avoir resolu mon problemme!!
Bye!

signaler à un administrateur
Commentaire de Raish le 24/04/2005 22:42:26

Merci, mias merci beaucoup pour ca!!!!! ;)

signaler à un administrateur
Commentaire de KsmoinO le 25/04/2005 11:31:04

bonjour errikke,

avant toutes choses, je tiens à te remercier pour ton tutorial que je trouve très utiles!
je le trouve très cler et assez agréable

par contre G rencontré un petit problème dans une partie qui m'interressait :

dans la partie 4.b
lors de l'exécution sous devc++ 5 le menu ne s'affichait pas :
pour corriger le problème j'ai fais ceci :
ligne 1787 : //HMENU hMenu; <= décommenter ceci
ligne 2130 : remplacer "NULL" par "hMenu"
entre les lignes 2136 et 2138 : ajouter :
hMenu = LoadMenu(hThisInstance,MAKEINTRESOURCE(ID_MENU));
SetMenu(hWnd,hMenu);
est ce que cette solution te parait correcte et si non, me dire ce que je fais pas bien ou comment m'en passer ;)
Merci pour tout en tout cas
J'espère que tu continuera à fournir tes precieux conseils :p
@ ++

signaler à un administrateur
Commentaire de errikke le 25/04/2005 20:26:22

Oui, cela me parait correct puisque tu declare un handle sur un menu, tu l'initialises
dans CreateWindowEx() et enfin tu le charge et tu l'affecte a la fenetre.
Je pense toutefois que tu peut laisser a la ligne 2130  : NULL, car tu charges le menu
apres creation de la fenetre.
Dans ce cas, il faut penser a detruire le menu en fermant (il n'est pas lie a la classe de fenetre.)
A ce sujet, une question ; qu'as tu mis dans le membre wincl.lpszMenuName de la
structure WNDCLASSEX ?  

signaler à un administrateur
Commentaire de KsmoinO le 26/04/2005 08:56:51

dans la structure WNDCLASSEX j'ai laissé :
wincl.lpszMenuName             =        MAKEINTRESOURCE(ID_MENU);
et effectivement à la ligne 2130 l'argument peut rester à NULL
et pour la destruction du menu j'avou que je n'y avais pas pensé, mais maintenant j'ai fais ceci

    // Voir boites de dialogues non modale en début de code.
    while (GetMessage (&messages, NULL, 0, 0))
    {
        if(!IsDialogMessage (hWndModelessDialog, &messages))
     {
        TranslateMessage(&messages);

        DispatchMessage(&messages);
        }
    }
    
    DestroyMenu(hMenu);

est ce bien à cet endroit qu'il faut le placer ?
merci
@++

signaler à un administrateur
Commentaire de errikke le 27/04/2005 21:58:43

Meme si ta  facon de proceder fonctionne (j'ai verifie), on met toutes les
fonctions de destructions des menus, objets ...  dans le traitement du
message WM_CLOSE :

case WM_CLOSE :
          DestroyMenu(hMenu);
          //...
          DestroyWindow(hWnd);
           break;

Par ailleurs tu peut laisser  wincl.lpszMenuName = NULL;  puisque tu charges le
menu apres creation de la fenetre.
        

signaler à un administrateur
Commentaire de kawash le 29/04/2005 18:09:58

exellent tuto!
merci

signaler à un administrateur
Commentaire de magma le 30/04/2005 23:51:53


Salut,

N'oublie pas de mentionner l'API DrawState(...)
dans ton tutorial.
En effet, cette fonction permet d'afficher
simplement texte, icone ou bitmap dans
différents modes.

Bon continuation...

signaler à un administrateur
Commentaire de MoDDiB le 23/06/2005 12:03:41

Monstrueux ton tuto ! 10/10

signaler à un administrateur
Commentaire de nightlord666 le 04/08/2005 10:27:32

Bonjour ! Je trouve ton tuto super mais j'ai un problème à la partie 2a : le menu ne s'affiche pas. J'ai essayé ta technique de supprimer les fichiers *_private mais ça ne marche pas. Est-ce que quelqu'un pourrait me dire comment faire ?

signaler à un administrateur
Commentaire de Horfee le 20/08/2005 20:41:32

Plutot TRES sympa cette suite de tutoriels...
Par contre, étant donnée que je débute dans le developpement Win32, comment qu'on fait pour ajouter un autre controle non "de base", comme par exemple un equivalent GroupBox, ou encore listview, ou treeview etc docteur ?

signaler à un administrateur
Commentaire de BruNews le 20/08/2005 20:57:02 administrateur CS

#include <windows.h>
#include <commctrl.h>

InitCommonControls();
ou InitCommonControlsEx(...);
dès le début de WinMain.

Ajouter comctl32.lib au linker.

signaler à un administrateur
Commentaire de Horfee le 20/08/2005 21:34:04

et après svp ??? (I'm just a beginning !!!)

signaler à un administrateur
Commentaire de BruNews le 20/08/2005 21:47:05 administrateur CS

Regarde dans les sources, il y en a des tas, un exemple ici:
http://www.cppfrance.com/code.aspx?id=11151
fouille dans les sources et tu en auras plein d'autres.

signaler à un administrateur
Commentaire de Horfee le 20/08/2005 21:55:06

hehe la source que tu m'a filé, oui elle repond à mon besoin. Sauf QUE en fait j'aimerais savoir s'il est possible que les controles soient créé comme les autres, cad avec CreateWindowEx(...);

signaler à un administrateur
Commentaire de BruNews le 20/08/2005 22:06:14 administrateur CS

Bien entendu, CreateWindowEx avec WC_LISTVIEW comme classe de fenêtre.
MSDN est là pour ce genre de choses:
http://www.msdn.microsoft.com/library/default.asp

signaler à un administrateur
Commentaire de BruNews le 20/08/2005 22:09:56 administrateur CS

Autre point, n'oublie jamais qu'une série de CreateWindow(Ex) sera toujours moins rapide à charger qu'un template en ressource, le code C d'un prog user ne pourra jamais rivaliser avec le kernel mode de Windows. Moralité: ne jamais coder inutilement ce que le system sait faire, ol le fera toujours mieux et plus vite.

signaler à un administrateur
Commentaire de Horfee le 20/08/2005 22:12:03

rha t terrible !!! merci bcp !!!

signaler à un administrateur
Commentaire de Horfee le 20/08/2005 22:27:23

ah ok ben c bon a savoir...moi qui pensait qu'au contraire ne pas utiliser les fichiers ressources c'était mieux...

signaler à un administrateur
Commentaire de Horfee le 21/08/2005 15:56:39

une autre question me taraude : pourquoi faut il mettre la fonction WndProc en fonction statique ???

signaler à un administrateur
Commentaire de BruNews le 21/08/2005 16:22:14 administrateur CS

Toute fonction de rappel (callback) doit avoir une adresse fixe sinon le compilo ne pourrait pas résoudre.

signaler à un administrateur
Commentaire de The_Sin le 05/09/2005 15:44:24

Lu,
j'avais mis de côté ce tuto un pti moment maintenant je m'y remet mais je n'arrive plus à compiler même en ajoutant -lgdi32 aux options du projet (j'ai dev cpp 4) est-ce que quelqu'un qui a déjà eu ce problème aurait une autre méthode pour le résoude :s

signaler à un administrateur
Commentaire de errikke le 05/09/2005 20:08:38

Pourrait tu m'indiquer ce qui ce passe quand tu essaie de compiler, et de quelle partie il s'agit.

signaler à un administrateur
Commentaire de The_Sin le 06/09/2005 15:47:02

Ca le fait avec toutes les parties
Le compilateur génére un grosse série d'erreur dans le genre
441 test.c
initializer element is not constant
ou
644 test.c
`static_cast' undeclared here (not in a function)
ou encore
644 test.c
parse error before `HBRUSH'
...

et le linkeur me dit ça :
gcc: c:\dev-c++\project\win32\test.o: No such file or directory
gcc: file path prefix `C:\DEV-C_~1\Bin\' never used

signaler à un administrateur
Commentaire de errikke le 09/09/2005 00:19:38

--> The_Sin : Quel compilateur utilise tu ? et si c'est dev c++ , quelle version ?

signaler à un administrateur
Commentaire de The_Sin le 09/09/2005 18:32:07

Dev cpp et j'ai essayé avec le 4 et le 5

signaler à un administrateur
Commentaire de errikke le 09/09/2005 21:30:54

J'utilise dev cpp aussi (4) et je ne vois pas trop ou est le probleme. tu cree bien un projet
windows application  ?
Dans les premieres parties, il n'est pas necessaire de rajouter de librairie, normalement
la configuration de base suffit..

Je vais encore reflechir a la question.

Pourrait tu me dire comment tu procede (etape par etape ) pour creer un projet, et ajouter le
fichier cpp, par exemple pour la premiere partie.

signaler à un administrateur
Commentaire de The_Sin le 09/09/2005 22:07:17

projet windows application, j'ai fait avec ton fichier mais j'ai aussi fait copier coller, que ce soit en C ou Cpp, j'ajoute -lgdi32 aux options du compilo et voilà je compile mais bug, sinon pour la seconde partie voilà le bug de link qu'il me génére également   [Linker error] undefined reference to `CreateSolidBrush@4' .
Mais sinon une fois j'avais eu des pb de link avec les lib sdl, je les décompressais et je les remettais à chaque fois mais elles changeaient de taille :s puis un contact qui avait eu le même problème chez un des ses amis m'avait envoyé ses fichiers à lui et là ça avait marché, peut-être là aussi le bug vient seulement de mon pc enfin faudrait que j'essaye sur le pc de mon frère s'il le libère...

signaler à un administrateur
Commentaire de errikke le 10/09/2005 16:42:20

Normalement l'erreur   undefined reference to `CreateSolidBrush@4' . se produit si on essaie
de compiler un fichier .cpp tout seul (non inclu dans un projet.)
L'erreur  `static_cast' undeclared here (not in a function) semblerait indiquer qu'il manque
une lib.

Tu devrais peut etre essayer de reinstaller un compilateur et de tout reprendre a 0.

Peut tu me dire si tu arrives a regler le pb ... cela peut interesser quelqu'un d'autre.

signaler à un administrateur
Commentaire de The_Sin le 10/09/2005 16:55:20

Tu devrais peut-être essayer de reinstaller un compilateur et de tout reprendre à 0. >>> en fait j'ai déjà essayé
Et c'est aussi à cette occasion que j'ai installé devcpp5 pour tester mais voilà...:(
Enfin UN compilateur y'en à d'autres gratuits aussi puissant que devcpp...?

signaler à un administrateur
Commentaire de errikke le 12/09/2005 20:03:22

L'ideal serait de rester sur dev c++, cela dit je n'ai pas essaye le 5, sinon tu peut essayer BORLAND:
http://www.borland.fr/download/compilateurs/
que je n'ai pas essaye non plus,

Par contre j''utilise egalement VCC + 6 introductory edition qui est gratuit et doit pouvoir se trouver moyennant
une recherche sur google.

Tu peut  aussi aller voir : http://www.dil.univ-mrs.fr/~garreta/generique/autres/UtiliserDevCpp.html qui me parait
bien fait pour la prise en main de dev c++

Concernant  ton probleme, je ne vois pas d'ou vient l'erreur, tu devrait essayer de regarder avec les ex fournies
dans dev c++ Fichier / Ouvrir  Projet et selectionner un projet (.dev) dans le sous repertoire examples
Je pense que cela  permettrait d'y voir plus clair  (sur dev c++ 4 les ex fonctionnent bien.)

Dit moi si tu arrives a un resultat ...  parce que la je commence a desesperer.

signaler à un administrateur
Commentaire de anonyme_man_in_this_world le 24/09/2005 23:02:11

salut   !!

franchement ,ton tutorial est vraiment superbe .cepandant ,ça sera simpa de ta part ,si tu ajoute

un chapitre sur la manipulation des images .

en tout cas ,bonne continuation .
@++

signaler à un administrateur
Commentaire de errikke le 26/09/2005 09:03:35

--> anonyme_man_in_this_world  

C'est prevu pour les parties  suivantes, mais avant, je veux terminer les controles et boites de dialogues.
Si tous vas bien ce sera pour Novembre ou Decembre.

signaler à un administrateur
Commentaire de Funzy78 le 02/10/2005 14:15:12

Géniaux ces tutaux.
10/10

signaler à un administrateur
Commentaire de mouhat le 07/10/2005 09:38:30

Bonjour, Je me suis beaucoup servit de ces tutoriaux, mais je cherche à utiliser mettre une horloge soit dans la barre de nom de la fenêtre, soit... mettre ça en haut a gauche, mais en tout cas je souhaiterais une horloge de la forme  HH:MM:SS  L'ennui c'est que j'ai essayé avec TextOut() Mais il semble qu'il ne prend pas les variables...

Quelqu'un aurait-il une indication s'il vous plait?

signaler à un administrateur
Commentaire de BruNews le 07/10/2005 09:54:58 administrateur CS

"TextOut ne prend pas les variables" ???
Exemple dans MSDN:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/fontext_5yd0.asp

signaler à un administrateur
Commentaire de errikke le 10/10/2005 20:04:49

--> mouhat : La fonction TexteOut() prend bien les variables; tout
au moins si on parle de la même chose :
TextOut(HDC hdc, int nXStart, int nYstart, LPCTSTR lpstring,
         int cbstring)

En 4ème argument : un pointeur sur la chaine qui doit être
dessinée et en 5ème argument le nombre de caractère de cette
chaîne qui doivent être affichés.

C'est à dire soit un texte "Mon Texte" entre guillemets :
TextOut(hDC,x,y,"Mon Texte", 9); // 9 est la taille du texte

soit un texte défini auparavant :

char MonTexte[] = "Mon Texte";
TextOut(hDC,x,y,MonTexte, sizeof(MonTexte)-1);

-1 pour éviter d'afficher le caractère NULL qui termine la chaîne.

Cependant, dans ton cas, il serait peut être préférable d'utiliser
la fonction SetWindowText() qui permet de modifier le contenu
de la barre de légende de la fenêtre :

SetWindowText(HWND hWnd, LPCSTR lpstring);

qui prend également l'adresse d'une chaîne.

--> BruNews : il est vrai que MSDN est bien fait ... quelquefois,
je me demande si ce que je fait sert bien à quelque chose.
qu'en penses tu ?

signaler à un administrateur
Commentaire de BruNews le 10/10/2005 20:37:01 administrateur CS

Certes MSDN existe, j'ai fourni Petzold et cependant ton tuto a l'air d'être apprécié, donc il est utile.
Il ne faut pas craindre de se répéter, il faut seulement craindre d'être incompris.

signaler à un administrateur
Commentaire de errikke le 10/10/2005 20:57:32

Il est vrai qu'il n'est pas facile de se faire comprendre.
PETZOLD est un outil formidable, parfois, j'aimerais
bien récupérer ses exemples. Mais cela ne me semblerait
pas honnête.
Pour moi, j'essaie de faire au mieux... et puis il
est vrai que j'aime faire cela.
En tous cas je te remercie pour ton intervention
sur les messages auquels je n'ai pas toujours le temps de
répondre ... et aussi pour l'aide morale que tu viens
de me donner.
A Bientôt.

signaler à un administrateur
Commentaire de mouhat le 10/10/2005 21:27:44

Oui j'ai vu merci bien... Cependant le problème subiste... c'est l'heure que je veux qu'il affiche... et il me retourne toujours des erreurs
Si je fais ça
char heure[] = nHeure;

Il me dit qu'il est impossible de définir la taille de la variable ou un truc du genre

signaler à un administrateur
Commentaire de BruNews le 10/10/2005 21:34:18 administrateur CS

char heure[] = nHeure; ???
C'est un bouquin de C dans lequel tu dois te plonger avant tout tutorial sinon tu ne feras que perdre du temps.

signaler à un administrateur
Commentaire de mouhat le 10/10/2005 21:43:07

Ben ce que je veux c'est passer ma variable  nHeure,  dans Textout() ... Je veux juste que ça s'affiche en fait... et que mon timer le mette à jour.. le timer fonctionne ...

signaler à un administrateur
Commentaire de BruNews le 10/10/2005 22:13:50 administrateur CS

nHeure c'est quoi, du int ou chaine ?
du int je suppose, tu devrais donc connaitre les fonctions de conversions C:
int <=> string.

signaler à un administrateur
Commentaire de errikke le 11/10/2005 23:28:01

Oui, il serait préférable de commencer par le commencement
et de bien faire la différence entre les types qui existent
en c. Pour faire simple ; essai de retrouver des explications
sur une fonction itoa (cela doit se trouver sur le site
et aussi quelque part dans mes tutos ; peut être gestion du clavier.)
Cependant tu t'exposeras immanquablement à des problèmes si tu
ne vois pas ce qui ne vas pas en écrivant char heure[] = nHeure;
Là, ce n'est pas du ressort des API, mais bien de la connaissance
de base du langage et il ne manque pas de livres ou de sites internet
pour progresser.
A Bientôt.

signaler à un administrateur
Commentaire de The_Sin le 21/10/2005 22:07:41

Le retour : :s
Ben attention j'ai résolu le problème mais franchement je sais pas d'où ça venait, donc je me remet à ton super tuto^^, j'ai testé plusieurs sources, toutes marchent...
Voilà merci tout ça!

signaler à un administrateur
Commentaire de The_Sin le 22/10/2005 13:12:14

Par contre en C je ne peux pas compiler, problèmes sur les constantes!

signaler à un administrateur
Commentaire de taye78 le 08/11/2005 00:25:54

Bravo, excellent.
10

signaler à un administrateur
Commentaire de alahassarodriguez le 14/04/2007 11:39:44

Bonjour,
J'ai essayé d'utilisé les tutos , le tout premier: ma première fenêtre,
de errikke mais j'ai les messages suivants

wParam,lParam: identifiants not found

quand j'essaie de compiler.
Quelqu'un sait -il m'aider?

signaler à un administrateur
Commentaire de BruNews le 14/04/2007 11:42:03 administrateur CS

#include <windows.h>
Projet GUI (NON console)
http://www.cppfrance.com/code.aspx?ID=38359

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,390 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.