Chargement image dans un contrôle "static".

mohdaef Messages postés 68 Date d'inscription vendredi 23 novembre 2007 Statut Membre Dernière intervention 14 mars 2012 - 2 avril 2008 à 21:07
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 - 2 avril 2008 à 22:36
Bonsoir.

Je travaille avec les APIs Windows et j'ai besoin de charger plusieur images dans une fenêtre, j'ai trouver le moyen de le faire avec les controles "static". Cependant l'image ne se charge pas elle ne s'affiche pas.

    Comment dois-je m'y prendre pour afficher cette image, où bien y aurait-il une autre solution plus intéressante ?

Merci pour votre aide.

8 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 13
2 avril 2008 à 21:34
Tu utilises bien STM_SETIMAGE ou STM_SETICON? Es-tu sûr de passer un handle d'image valide?

_____________________________________
Un éditeur de ressources gratuit pour Windows
0
mohdaef Messages postés 68 Date d'inscription vendredi 23 novembre 2007 Statut Membre Dernière intervention 14 mars 2012
2 avril 2008 à 21:48
Bonsoir.

Je procède ainsi :

        HWND hstatic = CreateWindow(
        "STATIC",
        0,
        WS_CHILD|WS_VISIBLE|SS_BITMAP,
        10,10,
        100,60,
        hwnd,
        0,
        0,
        NULL);

        HANDLE hImage = LoadImage(NULL,(LPCTSTR)"img.bmp",IMAGE_BITMAP,50,50,LR_SHARED);
        SendMessage(hstatic,STM_SETIMAGE,(WPARAM)IMAGE_BITMAP,(LPARAM)hImage);
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 13
2 avril 2008 à 22:09
Ca m'a pas l'air mal... Tu as vérifié que hImage est OK?

Petite remarque : (LPCTSTR)"img.bmp" -> Tu devrais éviter ce genre d'écriture (le cast est inutile, et si jamais tu passes en unicode, ca compilera et ca fera une erreur à l'exécution)

_____________________________________
Un éditeur de ressources gratuit pour Windows
0
cs_jfrancois Messages postés 482 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 5 décembre 2009 2
2 avril 2008 à 22:18
HANDLE hImage = LoadImage(NULL,(LPCTSTR)"img.bmp",IMAGE_BITMAP,50,50,LR_SHARED);


Avec cette instruction, img.bmp est un bitmap en ressource (il n'y a pas LR_LOADFROMFILE) !
Est-ce bien le cas ? car ce nom fait plutôt penser à un fichier !

Jean-François
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 24
2 avril 2008 à 22:31
Salut,
Si c'est bien un nom de fichier que tu donnes et pas une ressource il faut mettre  le flag : LR_LOADFROMFILE

Tu peux aussi utiliser le static ownerdraw en gérant le msg WM_DRAWITEM :

hWndStatic = CreateWindow("STATIC", "staticControl",
            WS_CHILD | WS_VISIBLE | SS_OWNERDRAW ,
            ect...

// le msg dans wndProc
 case WM_DRAWITEM:
     lpdis = (LPDRAWITEMSTRUCT)lParam;
     // on dessine ce qu'on veut avec le hdc 
     //  lpdi->hDC;
     // pour une image : SelectObject() et BitBlt()
     return TRUE;
0
mohdaef Messages postés 68 Date d'inscription vendredi 23 novembre 2007 Statut Membre Dernière intervention 14 mars 2012
2 avril 2008 à 22:33
Oui parce que c'est un fichier. Il faudrait donc que je remplace LR_SHARED par LR_LOADFROMFILE ?
0
mohdaef Messages postés 68 Date d'inscription vendredi 23 novembre 2007 Statut Membre Dernière intervention 14 mars 2012
2 avril 2008 à 22:36
Effectivement, sa marche nickel comme cela. Merci pour ton aide, je m'en souviendrais maintenant.

A plus.
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 13
2 avril 2008 à 22:36
Tu peux garder les deux : LR_SHARED | LR_LOADFROMFILE

_____________________________________
Un éditeur de ressources gratuit pour Windows
0
Rejoignez-nous