begin process at 2012 02 13 13:27:07
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

GUI

 > 

CopyImage retourne NULL


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

CopyImage retourne NULL

lundi 20 avril 2009 à 19:58:54 | CopyImage retourne NULL

mogwai93

Bonjour

j'ai un programme avec des images jpg stockées en ressource
CopyImage me retourne NULL
GetLastError me retourne la valeur 8
d'après la msdn, ça correspondrait à un manque de mémoire

or dans le gestionnaire des tâches, j'ai encore de la marge (où alors je ne regarde pas dans la bonne zone)

d'où peut venir l'erreur ?
comment corriger ?
comment savoir si on a assez de mémoire (si c'est bien ça le problème)


Merci


voici le code utilisé  (il vient d'un des codes présents sur ce site)

===============================
HBITMAP __stdcall PictureToBitmap(LPBYTE pmem, DWORD nSize)
{
    HRESULT hr;
    CoInitialize(0);
    HBITMAP hbmp_dst = 0;
    HGLOBAL hgbl =(HGLOBAL)GlobalAlloc(GMEM_FIXED, nSize);

    memcpy(hgbl, pmem, nSize);

    IStream* stream = 0;
    hr = CreateStreamOnHGlobal(hgbl, TRUE, &stream);
    if(!SUCCEEDED(hr) || !stream) goto errPicture;

    IPicture* picture = 0;
    hr = OleLoadPicture(stream, nSize, 0, IID_IPicture, (void**)&picture);
    if(!SUCCEEDED(hr) || !picture) goto errPicture;

    HBITMAP hbmp_src;
    picture->get_Handle((OLE_HANDLE *)&hbmp_src);
    if(!SUCCEEDED(hr) || !picture) goto errHandle;

    BITMAP bmp;
    GetObject(hbmp_src, sizeof bmp, &bmp);
    hbmp_dst = (HBITMAP)CopyImage(hbmp_src, IMAGE_BITMAP, 0, 0, 0);

    errHandle:
    picture->Release();
    errPicture:
    stream->Release();
    errStream:
    GlobalFree(hgbl);
    CoUninitialize();

    return hbmp_dst;
}
===============================

mercredi 22 avril 2009 à 18:49:45 | Re : CopyImage retourne NULL

vecchio56

Administrateur CodeS-SourceS
A priori le code est correct, en tous cas j'ai pu le tester avec succès
Je sais pas exactement comment connaitre la mémoire qu'il te reste, mais c'est vrai qu'une bitmap chargée en mémoire prend beaucoup de place (jusqu'a 4 octets par pixel).
Essaie avec une image plus petite pour voir si cela fonctionne.

_____________________________________
Un éditeur de ressources gratuit pour Windows

mercredi 22 avril 2009 à 21:17:00 | Re : CopyImage retourne NULL

mogwai93

pour connaître la mémoire qu'il reste, j'ai trouvé cela :
http://msdn.microsoft.com/en-us/library/aa965225(VS.85).aspx
GetPerformanceInfo,
GetProcessMemoryInfo,
GlobalMemoryStatusEx.

je me demandais si après le copyimage, il ne faudrait  pas appeler deleteobject sur hbmp_src ?

en réduisant la taille de l'image, ça fonctionne
mais je vais quand même regarder du côté des api ci-dessus pour connaître les limites en mémoire



Cette discussion est classée dans : stream, picture, retourne, hr, hbmp


Répondre à ce message

Sujets en rapport avec ce message

fonction surchargées [ par cabarrus ] à l'aide s.v.pécrire un prog qui surcharge une fonction getnumber(lire nombre).si vous passez un argument bool, cette version de la fonction retourne recuperer la propriete picture d'une image [ par vbbreizh ] Comment recuperer la propriete picture d'une image affichee dans un prog VB6 et l'exploiter dans une dll en VCPP.La dll utilise l'api drawtext() et l' recuperer la propriete picture d'une image [ par vbbreizh ] Comment recuperer la propriete picture d'une image affichee dans un prog VB6 et l'exploiter dans une dll en VCPP.La dll utilise l'api drawtext() et l' CBitmapButton & Picture Control [ par petronius ] j'aimerai modifier une image lorsque l'on clique dessus, mais je prefere utiliser un Picture Controle et non un Button ou un CBitmapButton. Pouvez-vou fonction qui retourne les touche du clvier qui sont pressé [ par mitnick ] je cherche une fonction pour une aplication caché qui retourne les touche que l utilisateur a pressé. lancer un exe avec son programmme [ par zoreol ] je veut lancer un exe et recuperer se qu'il affiche(ou retourne) a partir de mon programme j'y arrive avec Win exec mais je n'arrive pas a recup se qu Image dans controle Picture [ par maghella ] Salut !J'aimerai savoir comment on peut faire pour mettre une image dans un controle Picture sous Visual C++.Merci bcp.A++ Sauvegarder le contenu d'un Picture [ par ToasTy62 ] chalut tlm !bon g un pb ki commence a me triturer serieusement...pr commencer je bosse ac Win32(non pas MFC, pis si je precise pas on va me poster 10m Control Picture [ par Xentor609 ] Salut,Je voudrais afficher une image(jpeg ou bmp), dans le controle picture d'une dialogbox.J'arrive a afficher une image de type Jpeg, BMp ou gif ave arrondis a 8 [ par Topper ] j'aurais voulu savoir comment je px faire pour que qd je rentre un chiffre, il me l'arrondisse a tous les muyltiple de 8.tous les chiffre plus petit q


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,156 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales