Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2033 connectés 

  FORUM HardWare.fr
  Programmation

  [Win]Comment mettre un bitmap en mémoire et le charger dans un handle?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Win]Comment mettre un bitmap en mémoire et le charger dans un handle?

n°46024
Alload
Posté le 11-07-2001 à 21:00:34  profilanswer
 

J'expérimente l'affichage des bitmaps dans une application Windows, j'ai vu qu'il fallait créer un HBITMAP que l'on initalisait avec la fonction LoadImage.
 
Mais j'ai aussi remarqué que le HBITMAP était détruit après son utilisation, du moins comme je l'utilise:
 
HDC hdc;
HDC hdcSrc;
PAINTSTRUCT ps;
 
HBITMAP hbm;
hbm = (HBITMAP)LoadImage(NULL, szFile, IMAGE_BITMAP, Width, Height, LR_LOADFROMFILE | LR_CREATEDIBSECTION);
 
hdcSrc = CreateCompatibleDC(hdcDest);
 
hdc = BeginPaint(hWnd, &ps);
SelectObject(hdcSrc, hbm);
BitBlt(hdcDest, destx, desty, Width, Height, hdcSrc, srcx, srcy, SRCCOPY);
EndPaint(hWnd, &ps);
 
 
Mais dans mon application j'utilise une class qui a une fonction pour afficher un bitmap, le problème c'est que je voulais stocker un HBITMAP initialisé lors de la création d'un objet de ma class, mais comme le HBITMAP est détruit après un affichage ça m'embete un peu.
 
Pour le moment je recharge simplement le bitmap dès que je veux l'afficher, mais ne connaissez-vous pas un moyen de laisser le bitmap en mémoire et de le réutiliser sans le recharger depuis le disque dur?

mood
Publicité
Posté le 11-07-2001 à 21:00:34  profilanswer
 

n°46257
Carbon_14
Posté le 12-07-2001 à 13:57:48  profilanswer
 

En ce qui me concerne, j'utilise le code
handBitMap = LoadBitmap(hInst, MAKEINTRESOURCE(BlocGra));
pour charger une image définie dans les ressources (en fait le bloc des boutons de mon appli).
Le handBitMap est défini en global. Quand je veux utiliser le bitmap, j'écris (16 et 32 bits)
 
{  
      BITMAP     bm;
      HDC        hdcMemory;
      HBITMAP    hbmpOld;
 
      GetObject(handBitMap, sizeof(BITMAP), &bm);
      hdcMemory = CreateCompatibleDC(hdc);
      hbmpOld = (HBITMAP)SelectObject(hdcMemory, handBitMap);
 
      BitBlt(hdc, 4, 2, 28, 28, hdcMemory, 0, 0, SRCCOPY);
 
      SelectObject(hdcMemory, hbmpOld);
      DeleteDC(hdcMemory);
}
 
 
Avec le LoadImage, je sais pas. C'est sans doute analogue.

n°46261
Alload
Posté le 12-07-2001 à 14:03:35  profilanswer
 

Oui mais si je veux garder en mémoire un bitmap qui n'est pas dans les resources?

n°46266
Alload
Posté le 12-07-2001 à 14:11:37  profilanswer
 

Ben en fait elle marche bien ma méthode, je sais pas ce que j'avais foutu hier comme connerie pour que ça ne marche pas.
:lol: :lol: :lol:
 
Enfin c'est cool. Ca marche :)

n°46272
zop
1 world, 1 web, 1 Windows
Posté le 12-07-2001 à 14:24:40  profilanswer
 

Je sais que çà ne résoud pas proprement ton pb, mais ne peux-tu pas mapper le fichier BMP en mémoire ???


---------------
- "Qui diable es-tu ?"
n°46286
Alload
Posté le 12-07-2001 à 14:37:29  profilanswer
 

Ben je pense que le bitmap est en mémoire avec ma façon, j'initialise un HBITMAP global avec la fonction LoadImage, donc il reste jusqu'à la fin de mon programme.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [Win]Comment mettre un bitmap en mémoire et le charger dans un handle?

 

Sujets relatifs
[VB] Mettre une application en ARRIERE plan[Visual C++] Comment mettre du texte, des boutons dans un onglet CTabC
[php] comment mettre a jour un fichier..[C++] Mettre dans la system tray un programme
[JAVA] mettre un resultset dans un string ????[QReport] Comment mettre une image en filigrane ?
PHP : difference entre \n sous Unix et sous WinMettre une image pour remplacer le bouton submit ...
[html] y a un truc à mettre dans le <a href= ...> pour que[VB6] Tout bête : Comment charger une feuille Excel ?
Plus de sujets relatifs à : [Win]Comment mettre un bitmap en mémoire et le charger dans un handle?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR