cs_Xs
Messages postés368Date d'inscriptionmercredi 14 novembre 2001StatutMembreDernière intervention 1 septembre 2008
-
1 juin 2004 à 23:27
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019
-
14 avril 2007 à 11:42
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
alahassarodriguez
Messages postés19Date d'inscriptionjeudi 5 avril 2007StatutMembreDernière intervention12 avril 2008 14 avril 2007 à 11:39
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?
taye78
Messages postés106Date d'inscriptionmardi 18 juin 2002StatutMembreDernière intervention13 janvier 2007 8 nov. 2005 à 00:25
Bravo, excellent.
10
The_Sin
Messages postés43Date d'inscriptionsamedi 25 septembre 2004StatutMembreDernière intervention 4 février 2006 22 oct. 2005 à 13:12
Par contre en C je ne peux pas compiler, problèmes sur les constantes!
The_Sin
Messages postés43Date d'inscriptionsamedi 25 septembre 2004StatutMembreDernière intervention 4 février 2006 21 oct. 2005 à 22:07
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!
errikke
Messages postés59Date d'inscriptionsamedi 11 janvier 2003StatutMembreDernière intervention15 mai 2006 11 oct. 2005 à 23:28
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.
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 10 oct. 2005 à 22:13
nHeure c'est quoi, du int ou chaine ?
du int je suppose, tu devrais donc connaitre les fonctions de conversions C:
int <=> string.
mouhat
Messages postés4Date d'inscriptionmardi 15 février 2005StatutMembreDernière intervention10 octobre 2005 10 oct. 2005 à 21:43
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 ...
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 10 oct. 2005 à 21:34
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.
mouhat
Messages postés4Date d'inscriptionmardi 15 février 2005StatutMembreDernière intervention10 octobre 2005 10 oct. 2005 à 21:27
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
errikke
Messages postés59Date d'inscriptionsamedi 11 janvier 2003StatutMembreDernière intervention15 mai 2006 10 oct. 2005 à 20:57
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.
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 10 oct. 2005 à 20:37
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.
errikke
Messages postés59Date d'inscriptionsamedi 11 janvier 2003StatutMembreDernière intervention15 mai 2006 10 oct. 2005 à 20:04
--> 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
-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 ?
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 7 oct. 2005 à 09:54
mouhat
Messages postés4Date d'inscriptionmardi 15 février 2005StatutMembreDernière intervention10 octobre 2005 7 oct. 2005 à 09:38
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?
Funzy78
Messages postés5Date d'inscriptionsamedi 6 mars 2004StatutMembreDernière intervention 5 octobre 2005 2 oct. 2005 à 14:15
Géniaux ces tutaux.
10/10
errikke
Messages postés59Date d'inscriptionsamedi 11 janvier 2003StatutMembreDernière intervention15 mai 2006 26 sept. 2005 à 09:03
--> 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.
anonyme_man_in_this_world
Messages postés161Date d'inscriptionsamedi 25 juin 2005StatutMembreDernière intervention 1 août 2006 24 sept. 2005 à 23:02
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 .
@++
errikke
Messages postés59Date d'inscriptionsamedi 11 janvier 2003StatutMembreDernière intervention15 mai 2006 12 sept. 2005 à 20:03
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.
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.
The_Sin
Messages postés43Date d'inscriptionsamedi 25 septembre 2004StatutMembreDernière intervention 4 février 2006 10 sept. 2005 à 16:55
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...?
errikke
Messages postés59Date d'inscriptionsamedi 11 janvier 2003StatutMembreDernière intervention15 mai 2006 10 sept. 2005 à 16:42
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.
The_Sin
Messages postés43Date d'inscriptionsamedi 25 septembre 2004StatutMembreDernière intervention 4 février 2006 9 sept. 2005 à 22:07
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...
errikke
Messages postés59Date d'inscriptionsamedi 11 janvier 2003StatutMembreDernière intervention15 mai 2006 9 sept. 2005 à 21:30
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.
The_Sin
Messages postés43Date d'inscriptionsamedi 25 septembre 2004StatutMembreDernière intervention 4 février 2006 9 sept. 2005 à 18:32
Dev cpp et j'ai essayé avec le 4 et le 5
errikke
Messages postés59Date d'inscriptionsamedi 11 janvier 2003StatutMembreDernière intervention15 mai 2006 9 sept. 2005 à 00:19
--> The_Sin : Quel compilateur utilise tu ? et si c'est dev c++ , quelle version ?
The_Sin
Messages postés43Date d'inscriptionsamedi 25 septembre 2004StatutMembreDernière intervention 4 février 2006 6 sept. 2005 à 15:47
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
errikke
Messages postés59Date d'inscriptionsamedi 11 janvier 2003StatutMembreDernière intervention15 mai 2006 5 sept. 2005 à 20:08
Pourrait tu m'indiquer ce qui ce passe quand tu essaie de compiler, et de quelle partie il s'agit.
The_Sin
Messages postés43Date d'inscriptionsamedi 25 septembre 2004StatutMembreDernière intervention 4 février 2006 5 sept. 2005 à 15:44
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
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 21 août 2005 à 16:22
Toute fonction de rappel (callback) doit avoir une adresse fixe sinon le compilo ne pourrait pas résoudre.
Horfee
Messages postés188Date d'inscriptionmercredi 9 avril 2003StatutMembreDernière intervention10 août 2009 21 août 2005 à 15:56
une autre question me taraude : pourquoi faut il mettre la fonction WndProc en fonction statique ???
Horfee
Messages postés188Date d'inscriptionmercredi 9 avril 2003StatutMembreDernière intervention10 août 2009 20 août 2005 à 22:27
ah ok ben c bon a savoir...moi qui pensait qu'au contraire ne pas utiliser les fichiers ressources c'était mieux...
Horfee
Messages postés188Date d'inscriptionmercredi 9 avril 2003StatutMembreDernière intervention10 août 2009 20 août 2005 à 22:12
rha t terrible !!! merci bcp !!!
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 20 août 2005 à 22:09
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.
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 20 août 2005 à 22:06
Horfee
Messages postés188Date d'inscriptionmercredi 9 avril 2003StatutMembreDernière intervention10 août 2009 20 août 2005 à 21:55
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(...);
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 20 août 2005 à 21:47
Horfee
Messages postés188Date d'inscriptionmercredi 9 avril 2003StatutMembreDernière intervention10 août 2009 20 août 2005 à 21:34
et après svp ??? (I'm just a beginning !!!)
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 20 août 2005 à 20:57
#include <windows.h>
#include <commctrl.h>
InitCommonControls();
ou InitCommonControlsEx(...);
dès le début de WinMain.
Ajouter comctl32.lib au linker.
Horfee
Messages postés188Date d'inscriptionmercredi 9 avril 2003StatutMembreDernière intervention10 août 2009 20 août 2005 à 20:41
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 ?
nightlord666
Messages postés746Date d'inscriptionvendredi 17 juin 2005StatutMembreDernière intervention23 mai 200710 4 août 2005 à 10:27
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 ?
MoDDiB
Messages postés546Date d'inscriptionmardi 26 novembre 2002StatutMembreDernière intervention 4 mai 20071 23 juin 2005 à 12:03
Monstrueux ton tuto ! 10/10
cs_magma
Messages postés198Date d'inscriptionvendredi 4 avril 2003StatutMembreDernière intervention18 mars 2011 30 avril 2005 à 23:51
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...
cs_kawash
Messages postés79Date d'inscriptionvendredi 8 février 2002StatutMembreDernière intervention27 août 2006 29 avril 2005 à 18:09
exellent tuto!
merci
errikke
Messages postés59Date d'inscriptionsamedi 11 janvier 2003StatutMembreDernière intervention15 mai 2006 27 avril 2005 à 21:58
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.
KsmoinO
Messages postés26Date d'inscriptionlundi 4 avril 2005StatutMembreDernière intervention23 avril 2007 26 avril 2005 à 08:56
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
@++
errikke
Messages postés59Date d'inscriptionsamedi 11 janvier 2003StatutMembreDernière intervention15 mai 2006 25 avril 2005 à 20:26
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 ?
KsmoinO
Messages postés26Date d'inscriptionlundi 4 avril 2005StatutMembreDernière intervention23 avril 2007 25 avril 2005 à 11:31
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
@ ++
cs_Raish
Messages postés8Date d'inscriptionmercredi 9 mars 2005StatutMembreDernière intervention 3 octobre 2005 24 avril 2005 à 22:42
Merci, mias merci beaucoup pour ca!!!!! ;)
orc_undead
Messages postés5Date d'inscriptionmercredi 9 juin 2004StatutMembreDernière intervention15 janvier 2009 9 avril 2005 à 21:46
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!
errikke
Messages postés59Date d'inscriptionsamedi 11 janvier 2003StatutMembreDernière intervention15 mai 2006 9 avril 2005 à 20:47
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.)
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 );
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+
orc_undead
Messages postés5Date d'inscriptionmercredi 9 juin 2004StatutMembreDernière intervention15 janvier 2009 7 avril 2005 à 21:17
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!!???
errikke
Messages postés59Date d'inscriptionsamedi 11 janvier 2003StatutMembreDernière intervention15 mai 2006 7 avril 2005 à 19:44
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.
marik7335
Messages postés115Date d'inscriptionsamedi 27 décembre 2003StatutMembreDernière intervention11 mai 2009 6 avril 2005 à 22:38
Essai de créer un autre projet win32 application et fais un copier coller du code.
orc_undead
Messages postés5Date d'inscriptionmercredi 9 juin 2004StatutMembreDernière intervention15 janvier 2009 4 avril 2005 à 20:03
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
valeryp
Messages postés9Date d'inscriptionjeudi 24 mars 2005StatutMembreDernière intervention28 mars 2005 31 mars 2005 à 13:14
slt ton tutorial est genial ne t'arrete pas la
10/10
quentin2111
Messages postés11Date d'inscriptionjeudi 2 octobre 2003StatutMembreDernière intervention18 mars 2005 18 mars 2005 à 23:03
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 !
marik7335
Messages postés115Date d'inscriptionsamedi 27 décembre 2003StatutMembreDernière intervention11 mai 2009 11 janv. 2005 à 22:52
Franchement, rien à dire
bravo
10/10
Funto66
Messages postés1267Date d'inscriptionmercredi 1 janvier 2003StatutMembreDernière intervention28 février 20074 22 déc. 2004 à 18:44
Ç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 :)
The_Sin
Messages postés43Date d'inscriptionsamedi 25 septembre 2004StatutMembreDernière intervention 4 février 2006 22 déc. 2004 à 17:56
Merci:)
Par contre ça me laisse toujours la fenetre msdos derrière
Funto66
Messages postés1267Date d'inscriptionmercredi 1 janvier 2003StatutMembreDernière intervention28 février 20074 22 déc. 2004 à 15:37
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.
The_Sin
Messages postés43Date d'inscriptionsamedi 25 septembre 2004StatutMembreDernière intervention 4 février 2006 22 déc. 2004 à 14:36
Chez moi quand j'essaye de compiler ton tuto il me dit ça : undefined reference to `CreateSolidBrush@4'
:'(
cs_angeljp
Messages postés3Date d'inscriptionmardi 26 août 2003StatutMembreDernière intervention10 décembre 2004 10 déc. 2004 à 17:35
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 !
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 6 déc. 2004 à 12:44
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.
cs_Propheus
Messages postés3Date d'inscriptionlundi 31 mars 2003StatutMembreDernière intervention 6 décembre 2004 6 déc. 2004 à 12:29
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 :)
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 6 déc. 2004 à 10:29
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...
errikke
Messages postés59Date d'inscriptionsamedi 11 janvier 2003StatutMembreDernière intervention15 mai 2006 6 déc. 2004 à 09:42
--> 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.
Funto66
Messages postés1267Date d'inscriptionmercredi 1 janvier 2003StatutMembreDernière intervention28 février 20074 5 déc. 2004 à 22:07
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.
cs_Propheus
Messages postés3Date d'inscriptionlundi 31 mars 2003StatutMembreDernière intervention 6 décembre 2004 5 déc. 2004 à 18:45
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.
cs_Silverd
Messages postés25Date d'inscriptionlundi 25 octobre 2004StatutMembreDernière intervention10 février 2006 27 oct. 2004 à 15:23
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
errikke
Messages postés59Date d'inscriptionsamedi 11 janvier 2003StatutMembreDernière intervention15 mai 2006 21 oct. 2004 à 19:55
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.
jaco_2004
Messages postés3Date d'inscriptionsamedi 28 août 2004StatutMembreDernière intervention31 décembre 2004 2 sept. 2004 à 04: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.
errikke
Messages postés59Date d'inscriptionsamedi 11 janvier 2003StatutMembreDernière intervention15 mai 2006 31 août 2004 à 09:37
--> 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.
Bebert251188
Messages postés23Date d'inscriptiondimanche 4 juillet 2004StatutMembreDernière intervention23 novembre 2004 14 août 2004 à 17:02
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
cs_detlev
Messages postés3Date d'inscriptionsamedi 29 novembre 2003StatutMembreDernière intervention13 août 2004 13 août 2004 à 21:05
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.
Funto66
Messages postés1267Date d'inscriptionmercredi 1 janvier 2003StatutMembreDernière intervention28 février 20074 23 juin 2004 à 22:39
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.
arouche
Messages postés19Date d'inscriptionmardi 3 décembre 2002StatutMembreDernière intervention 1 septembre 2010 23 juin 2004 à 17:09
Débutant en C++, mais question va peut etre paraitre conne pour certain, mais quel type de projet faut il créer ??
cs_wolfcyber
Messages postés78Date d'inscriptiondimanche 22 février 2004StatutMembreDernière intervention24 juillet 2005 14 juin 2004 à 20:24
Pas mal ce tutorial, 8/10
cs_Urgo
Messages postés780Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention16 avril 20091 11 juin 2004 à 21:18
J'suis content que le message soit passé ;)
Merci de ta compréhension
errikke
Messages postés59Date d'inscriptionsamedi 11 janvier 2003StatutMembreDernière intervention15 mai 2006 7 juin 2004 à 07:46
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+
cs_Urgo
Messages postés780Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention16 avril 20091 5 juin 2004 à 21:05
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.
Funto66
Messages postés1267Date d'inscriptionmercredi 1 janvier 2003StatutMembreDernière intervention28 février 20074 5 juin 2004 à 11:57
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 ^^
cs_Xs
Messages postés368Date d'inscriptionmercredi 14 novembre 2001StatutMembreDernière intervention 1 septembre 2008 2 juin 2004 à 19:55
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 !
errikke
Messages postés59Date d'inscriptionsamedi 11 janvier 2003StatutMembreDernière intervention15 mai 2006 2 juin 2004 à 19:49
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 ...
cs_Urgo
Messages postés780Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention16 avril 20091 2 juin 2004 à 00:05
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.
cs_Xs
Messages postés368Date d'inscriptionmercredi 14 novembre 2001StatutMembreDernière intervention 1 septembre 2008 1 juin 2004 à 23:27
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....
14 avril 2007 à 11:42
Projet GUI (NON console)
http://www.cppfrance.com/code.aspx?ID=38359
14 avril 2007 à 11:39
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?
8 nov. 2005 à 00:25
10
22 oct. 2005 à 13:12
21 oct. 2005 à 22:07
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!
11 oct. 2005 à 23:28
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.
10 oct. 2005 à 22:13
du int je suppose, tu devrais donc connaitre les fonctions de conversions C:
int <=> string.
10 oct. 2005 à 21:43
10 oct. 2005 à 21:34
C'est un bouquin de C dans lequel tu dois te plonger avant tout tutorial sinon tu ne feras que perdre du temps.
10 oct. 2005 à 21:27
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
10 oct. 2005 à 20:57
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.
10 oct. 2005 à 20:37
Il ne faut pas craindre de se répéter, il faut seulement craindre d'être incompris.
10 oct. 2005 à 20:04
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 ?
7 oct. 2005 à 09:54
Exemple dans MSDN:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/fontext_5yd0.asp
7 oct. 2005 à 09:38
Quelqu'un aurait-il une indication s'il vous plait?
2 oct. 2005 à 14:15
10/10
26 sept. 2005 à 09:03
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.
24 sept. 2005 à 23:02
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 .
@++
12 sept. 2005 à 20:03
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.
10 sept. 2005 à 16:55
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...?
10 sept. 2005 à 16:42
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.
9 sept. 2005 à 22:07
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...
9 sept. 2005 à 21:30
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.
9 sept. 2005 à 18:32
9 sept. 2005 à 00:19
6 sept. 2005 à 15:47
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
5 sept. 2005 à 20:08
5 sept. 2005 à 15:44
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
21 août 2005 à 16:22
21 août 2005 à 15:56
20 août 2005 à 22:27
20 août 2005 à 22:12
20 août 2005 à 22:09
20 août 2005 à 22:06
MSDN est là pour ce genre de choses:
http://www.msdn.microsoft.com/library/default.asp
20 août 2005 à 21:55
20 août 2005 à 21:47
http://www.cppfrance.com/code.aspx?id=11151
fouille dans les sources et tu en auras plein d'autres.
20 août 2005 à 21:34
20 août 2005 à 20:57
#include <commctrl.h>
InitCommonControls();
ou InitCommonControlsEx(...);
dès le début de WinMain.
Ajouter comctl32.lib au linker.
20 août 2005 à 20:41
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 ?
4 août 2005 à 10:27
23 juin 2005 à 12:03
30 avril 2005 à 23:51
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...
29 avril 2005 à 18:09
merci
27 avril 2005 à 21:58
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.
26 avril 2005 à 08:56
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
@++
25 avril 2005 à 20:26
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 ?
25 avril 2005 à 11:31
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
@ ++
24 avril 2005 à 22:42
9 avril 2005 à 21:46
Merci d'avoir resolu mon problemme!!
Bye!
9 avril 2005 à 20:47
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+
7 avril 2005 à 21:17
Il est ou le problem!!???
7 avril 2005 à 19:44
L'erreur LNK2001 peut avoir diverses causes, mais dans ton cas, je pense que la
cause est la nature du projet.
6 avril 2005 à 22:38
4 avril 2005 à 20:03
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!!
31 mars 2005 à 13:14
10/10
18 mars 2005 à 23:03
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 !
11 janv. 2005 à 22:52
bravo
10/10
22 déc. 2004 à 18:44
22 déc. 2004 à 17:56
Par contre ça me laisse toujours la fenetre msdos derrière
22 déc. 2004 à 15:37
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.
22 déc. 2004 à 14:36
:'(
10 déc. 2004 à 17:35
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 !
6 déc. 2004 à 12:44
6 déc. 2004 à 12:29
-> 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 :)
6 déc. 2004 à 10:29
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...
6 déc. 2004 à 09:42
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.
5 déc. 2004 à 22:07
Pour la compréhension, on ne rajoute pas de choses inutiles.
C'est mon avis.
5 déc. 2004 à 18:45
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.
27 oct. 2004 à 15:23
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
21 oct. 2004 à 19:55
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.
2 sept. 2004 à 04:45
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.
31 août 2004 à 09:37
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.
14 août 2004 à 17:02
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
13 août 2004 à 21:05
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.
23 juin 2004 à 22:39
Pour Visual C++ : Win32 Application
Pour Dev-C++ : Windows Application.
23 juin 2004 à 17:09
14 juin 2004 à 20:24
11 juin 2004 à 21:18
Merci de ta compréhension
7 juin 2004 à 07:46
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+
5 juin 2004 à 21:05
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.
5 juin 2004 à 11:57
J'espère juste que tu vas pas finir comme ça ^^
2 juin 2004 à 19:55
Il ne faut pas tout prendre à la lettre !
Cordialement.
ps : on attend tous avec impatience teS futures sources !
2 juin 2004 à 19:49
et les filles sont belles!
Plus serieusement, je vais arreter ici ... mais pour une raison evidente ...
2 juin 2004 à 00:05
1 juin 2004 à 23:27
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....