TUTORIAL WIN32 :

cs_Xs Messages postés 368 Date d'inscription mercredi 14 novembre 2001 Statut Membre Dernière intervention 1 septembre 2008 - 1 juin 2004 à 23:27
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 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.

https://codes-sources.commentcamarche.net/source/23304-tutorial-win32

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
14 avril 2007 à 11:42
#include <windows.h>
Projet GUI (NON console)
http://www.cppfrance.com/code.aspx?ID=38359
alahassarodriguez Messages postés 19 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 12 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és 106 Date d'inscription mardi 18 juin 2002 Statut Membre Dernière intervention 13 janvier 2007
8 nov. 2005 à 00:25
Bravo, excellent.
10
The_Sin Messages postés 43 Date d'inscription samedi 25 septembre 2004 Statut Membre Derniè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és 43 Date d'inscription samedi 25 septembre 2004 Statut Membre Derniè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és 59 Date d'inscription samedi 11 janvier 2003 Statut Membre Dernière intervention 15 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és 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 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és 4 Date d'inscription mardi 15 février 2005 Statut Membre Dernière intervention 10 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és 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 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és 4 Date d'inscription mardi 15 février 2005 Statut Membre Dernière intervention 10 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és 59 Date d'inscription samedi 11 janvier 2003 Statut Membre Dernière intervention 15 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és 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 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és 59 Date d'inscription samedi 11 janvier 2003 Statut Membre Dernière intervention 15 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

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 ?
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
7 oct. 2005 à 09:54
"TextOut ne prend pas les variables" ???
Exemple dans MSDN:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/fontext_5yd0.asp
mouhat Messages postés 4 Date d'inscription mardi 15 février 2005 Statut Membre Dernière intervention 10 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és 5 Date d'inscription samedi 6 mars 2004 Statut Membre Dernière intervention 5 octobre 2005
2 oct. 2005 à 14:15
Géniaux ces tutaux.
10/10
errikke Messages postés 59 Date d'inscription samedi 11 janvier 2003 Statut Membre Dernière intervention 15 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és 161 Date d'inscription samedi 25 juin 2005 Statut Membre Derniè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és 59 Date d'inscription samedi 11 janvier 2003 Statut Membre Dernière intervention 15 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.

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.
The_Sin Messages postés 43 Date d'inscription samedi 25 septembre 2004 Statut Membre Derniè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és 59 Date d'inscription samedi 11 janvier 2003 Statut Membre Dernière intervention 15 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és 43 Date d'inscription samedi 25 septembre 2004 Statut Membre Derniè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és 59 Date d'inscription samedi 11 janvier 2003 Statut Membre Dernière intervention 15 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és 43 Date d'inscription samedi 25 septembre 2004 Statut Membre Derniè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és 59 Date d'inscription samedi 11 janvier 2003 Statut Membre Dernière intervention 15 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és 43 Date d'inscription samedi 25 septembre 2004 Statut Membre Derniè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és 59 Date d'inscription samedi 11 janvier 2003 Statut Membre Dernière intervention 15 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és 43 Date d'inscription samedi 25 septembre 2004 Statut Membre Derniè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és 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 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és 188 Date d'inscription mercredi 9 avril 2003 Statut Membre Dernière intervention 10 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és 188 Date d'inscription mercredi 9 avril 2003 Statut Membre Dernière intervention 10 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és 188 Date d'inscription mercredi 9 avril 2003 Statut Membre Dernière intervention 10 août 2009
20 août 2005 à 22:12
rha t terrible !!! merci bcp !!!
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 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és 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
20 août 2005 à 22:06
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
Horfee Messages postés 188 Date d'inscription mercredi 9 avril 2003 Statut Membre Dernière intervention 10 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és 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
20 août 2005 à 21:47
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.
Horfee Messages postés 188 Date d'inscription mercredi 9 avril 2003 Statut Membre Dernière intervention 10 août 2009
20 août 2005 à 21:34
et après svp ??? (I'm just a beginning !!!)
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 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és 188 Date d'inscription mercredi 9 avril 2003 Statut Membre Dernière intervention 10 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és 746 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 23 mai 2007 10
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és 546 Date d'inscription mardi 26 novembre 2002 Statut Membre Dernière intervention 4 mai 2007 1
23 juin 2005 à 12:03
Monstrueux ton tuto ! 10/10
cs_magma Messages postés 198 Date d'inscription vendredi 4 avril 2003 Statut Membre Dernière intervention 18 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és 79 Date d'inscription vendredi 8 février 2002 Statut Membre Dernière intervention 27 août 2006
29 avril 2005 à 18:09
exellent tuto!
merci
errikke Messages postés 59 Date d'inscription samedi 11 janvier 2003 Statut Membre Dernière intervention 15 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és 26 Date d'inscription lundi 4 avril 2005 Statut Membre Dernière intervention 23 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és 59 Date d'inscription samedi 11 janvier 2003 Statut Membre Dernière intervention 15 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és 26 Date d'inscription lundi 4 avril 2005 Statut Membre Dernière intervention 23 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és 8 Date d'inscription mercredi 9 mars 2005 Statut Membre Dernière intervention 3 octobre 2005
24 avril 2005 à 22:42
Merci, mias merci beaucoup pour ca!!!!! ;)
orc_undead Messages postés 5 Date d'inscription mercredi 9 juin 2004 Statut Membre Dernière intervention 15 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és 59 Date d'inscription samedi 11 janvier 2003 Statut Membre Dernière intervention 15 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.)

--------------------------------------------------------------------------------------------------------------------------------------
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+
orc_undead Messages postés 5 Date d'inscription mercredi 9 juin 2004 Statut Membre Dernière intervention 15 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és 59 Date d'inscription samedi 11 janvier 2003 Statut Membre Dernière intervention 15 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és 115 Date d'inscription samedi 27 décembre 2003 Statut Membre Dernière intervention 11 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és 5 Date d'inscription mercredi 9 juin 2004 Statut Membre Dernière intervention 15 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

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

J'y comprend vraiment rien!! Merci d'avance!!
valeryp Messages postés 9 Date d'inscription jeudi 24 mars 2005 Statut Membre Dernière intervention 28 mars 2005
31 mars 2005 à 13:14
slt ton tutorial est genial ne t'arrete pas la
10/10
quentin2111 Messages postés 11 Date d'inscription jeudi 2 octobre 2003 Statut Membre Dernière intervention 18 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és 115 Date d'inscription samedi 27 décembre 2003 Statut Membre Dernière intervention 11 mai 2009
11 janv. 2005 à 22:52
Franchement, rien à dire
bravo
10/10
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
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és 43 Date d'inscription samedi 25 septembre 2004 Statut Membre Derniè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és 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
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és 43 Date d'inscription samedi 25 septembre 2004 Statut Membre Derniè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és 3 Date d'inscription mardi 26 août 2003 Statut Membre Dernière intervention 10 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és 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 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és 3 Date d'inscription lundi 31 mars 2003 Statut Membre Derniè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és 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 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és 59 Date d'inscription samedi 11 janvier 2003 Statut Membre Dernière intervention 15 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és 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
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és 3 Date d'inscription lundi 31 mars 2003 Statut Membre Derniè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és 25 Date d'inscription lundi 25 octobre 2004 Statut Membre Dernière intervention 10 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és 59 Date d'inscription samedi 11 janvier 2003 Statut Membre Dernière intervention 15 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és 3 Date d'inscription samedi 28 août 2004 Statut Membre Dernière intervention 31 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és 59 Date d'inscription samedi 11 janvier 2003 Statut Membre Dernière intervention 15 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és 23 Date d'inscription dimanche 4 juillet 2004 Statut Membre Dernière intervention 23 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és 3 Date d'inscription samedi 29 novembre 2003 Statut Membre Dernière intervention 13 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és 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
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és 19 Date d'inscription mardi 3 décembre 2002 Statut Membre Derniè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és 78 Date d'inscription dimanche 22 février 2004 Statut Membre Dernière intervention 24 juillet 2005
14 juin 2004 à 20:24
Pas mal ce tutorial, 8/10
cs_Urgo Messages postés 780 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 16 avril 2009 1
11 juin 2004 à 21:18
J'suis content que le message soit passé ;)
Merci de ta compréhension
errikke Messages postés 59 Date d'inscription samedi 11 janvier 2003 Statut Membre Dernière intervention 15 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és 780 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 16 avril 2009 1
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és 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
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és 368 Date d'inscription mercredi 14 novembre 2001 Statut Membre Derniè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és 59 Date d'inscription samedi 11 janvier 2003 Statut Membre Dernière intervention 15 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és 780 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 16 avril 2009 1
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és 368 Date d'inscription mercredi 14 novembre 2001 Statut Membre Derniè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....
Rejoignez-nous