CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[C++] Charger BITMAP

Chaos_Clad
Chaos_Clad
Niveau 10
05 novembre 2004 à 17:16:04

:salut:

J´aimerai qu´on me dise ( et qu´on m´explique
:-d ) si c´est possible de créer un bouton dans une fenêtre Windows, quand on clique dessus ça affiche une image BITMAP prédéfinie.

Merci :)

Chaos_Clad
Chaos_Clad
Niveau 10
05 novembre 2004 à 17:32:10

http://wall.cours-info.net/?id=294

Au fait voilà le code :-d

dnob700
dnob700
Niveau 10
05 novembre 2004 à 18:56:04

ça dépend où tu veux mettre l´image.
tu as déjà ta source ( le hdcMem), il te suffit d´une cible ( par exemple le hDC de ta fenêtre en appelant GetDC(hwnd)).

puis tu utilise la fonction bitblt pour copier l´image dans ta fenêtre.

pour les paramètre de bitbtl, regarde dans l´aide, mais c´est pas très compliqué ( et puis je ne les connait pas)

gollumkawder
gollumkawder
Niveau 10
05 novembre 2004 à 19:02:16

bah, le bouton tu vas regler ça avec l´api Win32 dont tu trouveras des cours sur http://www.developpez.com

pour charger le bitmap, je peux te montrer un truc pour t´indiquer la démarche a suivre
http://walljv.free.fr/index.php?to=view&id=55

en espérant que ça t´aideras un petit peu, :)

dnob700
dnob700
Niveau 10
05 novembre 2004 à 22:24:30

c´est plus imple de charger le bmp depuis un fichier de ressource comme il le fait.

regarde ma source sur " comment avez vous débutez" elle cré puis affiche un bitmap après un appuie sur un menu, ça pourra te donner des idée sur comment faire.

( en fait, ça fait exactement ce que tu veux)

Chaos_Clad
Chaos_Clad
Niveau 10
05 novembre 2004 à 22:41:35

hBmp = LoadBitmap(hInstance, " MyResource1");
hdcMem = CreateCompatibleDC(hdc);
SelectObject(hdcMem, hBmp);

BitBlt(GetDC(hwnd), 20, 20,
32, 32, hdcMem,
10, 5, MERGECOPY);

DeleteDC(hdcMem);

Ca paraît bon ?
Sinon merci pour votre aide :)

Chaos_Clad
Chaos_Clad
Niveau 10
05 novembre 2004 à 22:44:19

BitBlt(GetDC(hwnd), 20, 20,
32, 32, hdcMem,
10, 5, MERGECOPY);

BitBlt(hdcDestination, xDestination, yDestination,
largeurSource, hauteurSource, hdcSource,
xSource, Ysource, operation);

Chaos_Clad
Chaos_Clad
Niveau 10
05 novembre 2004 à 22:45:00

Vraiment trop laid le code sur ce site... :(

Chaos_Clad
Chaos_Clad
Niveau 10
05 novembre 2004 à 23:01:18

http://wall.cours-info.net/?id=295

Mon compilo me signale aucune erreur, mais pourtant quand je veux l´executer, il ne se passe rien :(

dnob700
dnob700
Niveau 10
05 novembre 2004 à 23:05:59

MERGECOPY utilise des brosse je ne sais pas trop comment ça réagit, utilise plutot SRCCOPY je ne sais pas si ça peut corriger le problème, mais essaye déjà.

sinon ce qui est embêtant, c´est que tu fait un loadbitmap et ce n´est donc pas un compatiblebitmap qui est créé, je ne sais pas si ça peut venir de là, et de toute façon, je ne vois pas d´autre méthode.

Chaos_Clad
Chaos_Clad
Niveau 10
05 novembre 2004 à 23:13:59

J´ai essayé avec

hBmp = ( HBITMAP)LoadImage(hInstan, " .\\winimage.bmp", IMAGE_BITMAP,
32, 32, LR_LOADFROMFILE);

Mais il me fait la même chose, compile sans erreur mais ne s´exécute pas :(
Que signifie hInstan ?

dnob700
dnob700
Niveau 10
05 novembre 2004 à 23:26:15

chez moi j´utilise hInstance, c´est le premier paramètre recu par WinMain qui donne le handle de l´application.

en fait, ton bitmap est stocké dans ton exe, mais comme tu passe par windows pour le récupérer, tu doit lui dire qui tu es pour qu´il sache où regarder.
c´est hInstance ( ou hInstan chez toi apparement) qui s´en charge.

dnob700
dnob700
Niveau 10
05 novembre 2004 à 23:30:39

excuse moi, j´ai pas fait gaffe, mais si tu charge d´un fichier tu doit mettre hInstan à 0 ( tu le mets pas) car dans ce cas là, justement windows n´a pas besoin de savoir qui tu es.

maisz je sais pas si ça change grand chose.

Chaos_Clad
Chaos_Clad
Niveau 10
06 novembre 2004 à 10:01:18

Ca y est ça marche ! Enfi à moitié, il m´affiche l´image, mais sans créer la fenêtre Windows de mon . exe, il affiche l´image dans le coin supérieur gauche de mon compilo oO

hBmp = LoadBitmap(hThisInstance, " MyResource1");

hdcMem = CreateCompatibleDC(NULL);
SelectObject(hdcMem, hBmp);

BitBlt(GetDC(hwnd), 0, 0,
32, 32, hdcMem,
1, 1, SRCCOPY);

DeleteDC(hdcMem);

dnob700
dnob700
Niveau 10
06 novembre 2004 à 18:02:47

dans le coin en haut à gauche de ton compilo ou de ton écran ?

essaye en l´exécutant hors de l´IDE ( en lancant directement l´exe).

Chaos_Clad
Chaos_Clad
Niveau 10
06 novembre 2004 à 18:45:25

Nan de mon écran :)

dnob700
dnob700
Niveau 10
06 novembre 2004 à 19:26:16

et si tu templca cette ligne :
hdcMem = CreateCompatibleDC(NULL);

par

hdcMem = CreateCompatibleDC(GetDC(hwnd));

? bon, la je jette des caillou dans l´eau un peu au hasard, mais sinon, je vois vraiment pas. Il te faudrait quelqu´un qui s´y connaisse.

Chaos_Clad
Chaos_Clad
Niveau 10
06 novembre 2004 à 19:56:30

Ca marche parfaitement, mais j´ai toujours le problème qu´il me compile le truc et refuse de l´exécuter. :(

Enfin tant pis, maintenant j´essaie de gérer l´imprimante.

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment