Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 201338 10 déc. 2006 à 13:06
Salut:
Très bonne source. (8/10)
Juste une question: Comment ajouter des boutons sans pourtant gâcher l'images utiliser comme fond?
cs_Urgo
Messages postés780Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention16 avril 20091 15 août 2005 à 00:10
J'en ai aucune idée, faudrais que tu vois ça avec un utilisateur de dev-cpp...
Dans cette source j'utilise LoadBitmap(..), y'a rien de mystique si tu connais le Win32.
Ciao
pixelinf
Messages postés15Date d'inscriptionsamedi 30 avril 2005StatutMembreDernière intervention30 avril 2006 14 août 2005 à 23:25
Salut, Urgo repartons du bon pied ok, j'ai 21 ans voilà pour info :).
Donc enfait, je sais pas si ça vient de moi, mais desfois il ne prend pas en compte le fait que j'appuis sur echap, je suis sous devcpp, c'est pas ton exe qui marche pas, c'est quand je je prend ton code et je compile, il faut peut être faire une manip particuliere pour la compile ou direct ? De plus quand je met l'image dans le fichier ressource ça marche pas, il n'affiche pas la fenêtre, je susi obligé de charger une image de l'extérieure, tu sais c'est dû à quoi ?
(Cependant ton code est super c'est ce que je cherchais).
Merci d'avance.
cs_Urgo
Messages postés780Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention16 avril 20091 14 août 2005 à 23:10
Gros malin, j'ai été tout à fait correct dans ma réponse, excepté le fait que je ne t'ai pas vouvoyer, mais vu que tu n'as pas voulu donner ton âge je me suis accordé cette liberté.
Et puis ce genre de commentaire "ça marche pas", ça m'avance vachement...
Ca te fait ça uniquement avec mon exe, ou aussi lorsque tu compiles? Tu travailles sous dev, sous vs....?
Oui effectivement je suis direct dans mes propos et ça dérange, mais si tu n'es pas content tu peux toujours aller voir ailleurs, rien ne t'en empêche.
Je n'ai jamais refuser d'aider qqun lorsque cela était dans mes capacités.
pixelinf
Messages postés15Date d'inscriptionsamedi 30 avril 2005StatutMembreDernière intervention30 avril 2006 14 août 2005 à 20:56
tu es susceptible on dirait, je n'ai pas critiqué ce que tu as fait, mais c'est juste chez moi il y a un problème, enfin bref!
En attendant, tu aurais dû t'abstenir de mettre ce genre de "commentaire".
Tu as le droit de fermer ta bouche mec ok :)
Bonne soirée
cs_Urgo
Messages postés780Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention16 avril 20091 14 août 2005 à 18:14
OUI, tu es "le seul" (Da Only One) à avoir ce problème, merci de finir cette conversation par mp (si besoin est) afin d'éviter toute pollution avec des commentaires HS.
pixelinf
Messages postés15Date d'inscriptionsamedi 30 avril 2005StatutMembreDernière intervention30 avril 2006 9 août 2005 à 22:41
Petit probleme sur le programme, il ne prend plus en compte les messages, par exemple pour le traitement de la touche espace :
s@ldon
Messages postés140Date d'inscriptionsamedi 1 novembre 2003StatutMembreDernière intervention30 septembre 20093 10 mars 2005 à 15:53
Un autre probleme :
SetLayeredWindowAttributes n'est pas déclarée non plus...
Quelqu'un pourait m'aider?
s@ldon
Messages postés140Date d'inscriptionsamedi 1 novembre 2003StatutMembreDernière intervention30 septembre 20093 10 mars 2005 à 15:41
J'utilise devc++, et apparement LWA_COLORKEY n'est pas déclaré...
J'ai cherché dans windows.h et winuser.h mais je ne l'ai pas trouvé.
Meme sur msdn, j'ai trouvé un exemple, mais pas le code de LWA_COLORKEY...
Je pourré savoir le nombre que cette constante défini? ^^
merci!
cs_Urgo
Messages postés780Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention16 avril 20091 7 mars 2005 à 23:01
Source mise à jour (sans doute la dernière).
Je te remerci Benoît pour ton aide!
Ciao
Christian
cs_Boing
Messages postés15Date d'inscriptionmardi 3 août 2004StatutMembreDernière intervention 3 janvier 2007 7 mars 2005 à 09:46
Hello Urgo,
Juste un petite remarque supplémentaire, Lorsque tu utilises SelectObject, tu dois sauvegarder le Handle de l'objet précédent et le rétablir une fois que tu as fini. De cette façon, GDI est capable de faire le nettoyage.
Le gros problème, c'est que le debugger intégré à Visual ne gère pas les ressources et GDI donc on ne sait jamais ce qui se passe vraiment sauf à regarder les ressources de l'OS qui diminuent... Ou alors il faut utiliser un autre debugger.
Petite astuce aussi :
Tu interceptes WM_LBUTTONDOWN et tu le transfères sur WM_NCLBUTTONDOWN, tu peux utiliser WM_NCHITTEST et renvoyer HTCAPTION. C'est pratique, tu peux renvoyer la valeur que tu veux, HTCLOSE pour une zone de fermeture, HTNOWHERE pour une zone non cliquable...
A+
Benoît
yoyo269
Messages postés1403Date d'inscriptionlundi 23 février 2004StatutMembreDernière intervention11 janvier 20092 6 mars 2005 à 10:36
Bravo Urgo,
très bonne source.
Moi je dis ça vaut bien un 8/10.
YOYO, @+.
cs_Urgo
Messages postés780Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention16 avril 20091 26 févr. 2005 à 14:45
Ok, cette fois-ci j'ai compris. Merci à toi!
Le code sera mis à jour d'ici demain.
Bye
Urgo
cs_Boing
Messages postés15Date d'inscriptionmardi 3 août 2004StatutMembreDernière intervention 3 janvier 2007 26 févr. 2005 à 13:54
Hello Urgo,
C justement parceque tu mets hbrBackground à 0 (ou NULL) que tu devrais faire ton affichage du bitmap de fond de la fenêtre dans WM_ERASEBKGND...
C pas obligatoire, c'est juste plus optimisé.
Quand au support de Windows 98... Ca dépend de l'utilisateur visé. Je suis d'accord avec toi, si tu ne vises pas 98 le code que tu proproses est mieux. D'ailleurs je t'ai mis 8/10 pour la simplicité et la clareté de l'exemple.
a+
Benoît
cs_Urgo
Messages postés780Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention16 avril 20091 25 févr. 2005 à 21:03
1Ko = 1024 octets
W2K = Windows 2000
Faut lire la description de la source avant de se ruer sur le code...
Télécharge JR4 et CP5 (si c'est pas déjà fait), ici :
http://brunews.free.fr/brunews/index.htm (site de notre cher admin CS (Codes-Sources, pas le FPS non de dieu! :p) : le fabuleux BruNews)
Bye
Urgo
minet03
Messages postés415Date d'inscriptionsamedi 4 janvier 2003StatutMembreDernière intervention 2 décembre 20053 25 févr. 2005 à 20:28
ok merci (mais c'est sans doute l'expression W2K que je ne comprend pas). Cela dit ces commentaire seront bien mieux dans le code.
cs_Urgo
Messages postés780Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention16 avril 20091 25 févr. 2005 à 18:55
C'est pourtant clair :
DWORD VerifWin2KMini() // Vérifie si l'OS est W2K minimum (cf description de la source), l'appli ne démarrera pas si tu as Windows 98 par exemple.
Pk cette fonction? Tout simplement à cause de l'API SetLayeredWindowAttribute (pour la transparence) => VOIR MSDN
#define _WIN32_WINNT 0x0500 // Instruction qui indique que l'on utilise W2K ou supérieur, permet une compilation sans erreur => VOIR MSDN pour précisions
SIZE SizeBmp = {128, 128}; // Largeur puis hauteur du bmp utilisé
Ici je ne suis pas obligé de traiter le message WM_ERASEBKGND, car le membre hbrBackground de la structure WNDCLASSEX est passé à zéro lors de la création de la classe de la fenêtre.
Bye
Urgo
minet03
Messages postés415Date d'inscriptionsamedi 4 janvier 2003StatutMembreDernière intervention 2 décembre 20053 25 févr. 2005 à 18:20
ah quel dommage !!! c'est un code si intéressant, le seul problème c'est que tu ne commente rien dedans !!! c'est très dommage. Si tu pouvais juste rajouter des commentaire sur les ligne les plus importante, et pourquoi pas expliqué à quoi servent les fonctions (surtout la troisième, celle après l'enregistrement de la classe). 6/10
cs_Boing
Messages postés15Date d'inscriptionmardi 3 août 2004StatutMembreDernière intervention 3 janvier 2007 25 févr. 2005 à 09:14
Hello,
Tu devrais plutôt afficher ton Bitmap en réponse à WM_ERASEBKGND comme ça tu évites plus tard des réaffichages intempestifs car WM_PAINT est appelé pour toutes les invalidations et WM_ERASEBKGND uniquement lorsqu'on invalide avec erase = TRUE.
Pour faire la "même" chose à peu prés et que cela fonctionne en plus sous 98 on utilise la fonction SetWindowRgn. On calcul la région du bitmap de fond et on restreint la fenêtre à cette région. Par contre, avec SetWindowRgn, on ne gère pas les transparences partielles.
10 déc. 2006 à 13:06
Très bonne source. (8/10)
Juste une question: Comment ajouter des boutons sans pourtant gâcher l'images utiliser comme fond?
15 août 2005 à 00:10
Dans cette source j'utilise LoadBitmap(..), y'a rien de mystique si tu connais le Win32.
Ciao
14 août 2005 à 23:25
Donc enfait, je sais pas si ça vient de moi, mais desfois il ne prend pas en compte le fait que j'appuis sur echap, je suis sous devcpp, c'est pas ton exe qui marche pas, c'est quand je je prend ton code et je compile, il faut peut être faire une manip particuliere pour la compile ou direct ? De plus quand je met l'image dans le fichier ressource ça marche pas, il n'affiche pas la fenêtre, je susi obligé de charger une image de l'extérieure, tu sais c'est dû à quoi ?
(Cependant ton code est super c'est ce que je cherchais).
Merci d'avance.
14 août 2005 à 23:10
Et puis ce genre de commentaire "ça marche pas", ça m'avance vachement...
Ca te fait ça uniquement avec mon exe, ou aussi lorsque tu compiles? Tu travailles sous dev, sous vs....?
Oui effectivement je suis direct dans mes propos et ça dérange, mais si tu n'es pas content tu peux toujours aller voir ailleurs, rien ne t'en empêche.
Je n'ai jamais refuser d'aider qqun lorsque cela était dans mes capacités.
14 août 2005 à 20:56
En attendant, tu aurais dû t'abstenir de mettre ce genre de "commentaire".
Tu as le droit de fermer ta bouche mec ok :)
Bonne soirée
14 août 2005 à 18:14
9 août 2005 à 22:41
case WM_KEYDOWN:
if(wParam == VK_ESCAPE) PostMessage(hWnd, WM_CLOSE, 0, 0);
return 0;
ça ne marche pas, est ce que vous avez rencontré le même problème ou je suis le seul ? merci d'avance.
10 mars 2005 à 18:30
merci, a+
10 mars 2005 à 17:19
#define LWA_COLORKEY 0x01
et
SLWA_FUNC MySetLayeredWindowAttributes;
HMODULE hUser32 = GetModuleHandle("USER32.DLL");
if (!hUser32) return false;
MySetLayeredWindowAttributes = (SLWA_FUNC)GetProcAddress(hUser32, "SetLayeredWindowAttributes");
J'espère que ça te servira.
YOYO, @+.
10 mars 2005 à 15:53
SetLayeredWindowAttributes n'est pas déclarée non plus...
Quelqu'un pourait m'aider?
10 mars 2005 à 15:41
J'ai cherché dans windows.h et winuser.h mais je ne l'ai pas trouvé.
Meme sur msdn, j'ai trouvé un exemple, mais pas le code de LWA_COLORKEY...
Je pourré savoir le nombre que cette constante défini? ^^
merci!
7 mars 2005 à 23:01
Je te remerci Benoît pour ton aide!
Ciao
Christian
7 mars 2005 à 09:46
Juste un petite remarque supplémentaire, Lorsque tu utilises SelectObject, tu dois sauvegarder le Handle de l'objet précédent et le rétablir une fois que tu as fini. De cette façon, GDI est capable de faire le nettoyage.
donc :
HBITMAP OldBmp = NULL;
hMemDC = CreateCompatibleDC(hDC);
OldBmp = (HBITMAP)SelectObject(hMemDC, hBmp);
BitBlt(hDC, 0, 0, SizeBmp.cx, SizeBmp.cy, hMemDC, 0, 0, SRCCOPY);
SelectObject(hMemDC, OldBmp);
DeleteDC(hMemDC);
Le gros problème, c'est que le debugger intégré à Visual ne gère pas les ressources et GDI donc on ne sait jamais ce qui se passe vraiment sauf à regarder les ressources de l'OS qui diminuent... Ou alors il faut utiliser un autre debugger.
Petite astuce aussi :
Tu interceptes WM_LBUTTONDOWN et tu le transfères sur WM_NCLBUTTONDOWN, tu peux utiliser WM_NCHITTEST et renvoyer HTCAPTION. C'est pratique, tu peux renvoyer la valeur que tu veux, HTCLOSE pour une zone de fermeture, HTNOWHERE pour une zone non cliquable...
A+
Benoît
6 mars 2005 à 10:36
très bonne source.
Moi je dis ça vaut bien un 8/10.
YOYO, @+.
26 févr. 2005 à 14:45
Le code sera mis à jour d'ici demain.
Bye
Urgo
26 févr. 2005 à 13:54
C justement parceque tu mets hbrBackground à 0 (ou NULL) que tu devrais faire ton affichage du bitmap de fond de la fenêtre dans WM_ERASEBKGND...
C pas obligatoire, c'est juste plus optimisé.
Quand au support de Windows 98... Ca dépend de l'utilisateur visé. Je suis d'accord avec toi, si tu ne vises pas 98 le code que tu proproses est mieux. D'ailleurs je t'ai mis 8/10 pour la simplicité et la clareté de l'exemple.
a+
Benoît
25 févr. 2005 à 21:03
W2K = Windows 2000
Faut lire la description de la source avant de se ruer sur le code...
Va faire un tour sur http://msdn.microsoft.com si tu ne connais pas, tu y trouveras ton bonheur...
Télécharge JR4 et CP5 (si c'est pas déjà fait), ici :
http://brunews.free.fr/brunews/index.htm
(site de notre cher admin CS (Codes-Sources, pas le FPS non de dieu! :p) : le fabuleux BruNews)
Bye
Urgo
25 févr. 2005 à 20:28
25 févr. 2005 à 18:55
DWORD VerifWin2KMini() // Vérifie si l'OS est W2K minimum (cf description de la source), l'appli ne démarrera pas si tu as Windows 98 par exemple.
Pk cette fonction? Tout simplement à cause de l'API SetLayeredWindowAttribute (pour la transparence) => VOIR MSDN
#define _WIN32_WINNT 0x0500 // Instruction qui indique que l'on utilise W2K ou supérieur, permet une compilation sans erreur => VOIR MSDN pour précisions
SIZE SizeBmp = {128, 128}; // Largeur puis hauteur du bmp utilisé
Voir http://www.cppfrance.com/code.aspx?ID=10721 pour comparer le nombre de lignes de code; moi je ne tourne plus sur Windows 98 depuis un bon moment!
Ici je ne suis pas obligé de traiter le message WM_ERASEBKGND, car le membre hbrBackground de la structure WNDCLASSEX est passé à zéro lors de la création de la classe de la fenêtre.
Bye
Urgo
25 févr. 2005 à 18:20
25 févr. 2005 à 09:14
Tu devrais plutôt afficher ton Bitmap en réponse à WM_ERASEBKGND comme ça tu évites plus tard des réaffichages intempestifs car WM_PAINT est appelé pour toutes les invalidations et WM_ERASEBKGND uniquement lorsqu'on invalide avec erase = TRUE.
Pour faire la "même" chose à peu prés et que cela fonctionne en plus sous 98 on utilise la fonction SetWindowRgn. On calcul la région du bitmap de fond et on restreint la fenêtre à cette région. Par contre, avec SetWindowRgn, on ne gère pas les transparences partielles.
Benoît