Précédent   Forum des professionnels en informatique > C et C++ > Outils pour C & C++ > Visual C++ > MFC
MFC Vos questions sur les MFC
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/02/2012, 11h13   #1
Inscrit
 
Inscription : juin 2007
Messages : 149
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 149
Points : 25
Points : 25
Par défaut Je ne peux pas afficher une mage bitmap dans mon picture control

bonjour à tous,

Je veux afficher des images bitmap dynamiquement dans un picture control.
C'est a dire j'ai un combo box à partir du quel je choisi le nom de l'image que je dois l'afficher par la suite dans un picture control .

Mais l'image ne s'affiche pas.

Ci-dessous le code de mon application:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void CAnyPictureControl::PrintBmp(HWND hWnd, LPCWSTR filename)
{
  HBITMAP hBmp;
  HDC hDC;
  hBmp=(HBITMAP)LoadImage(NULL,filename,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
  hDC=GetDC(hWnd);
  DrawState(hDC,NULL,NULL,(LPARAM)hBmp,NULL,0,0,0,0,DST_BITMAP);
  DeleteObject(hBmp);
  ReleaseDC(hWnd,hDC);
}

//Appel de la fonction d'affichage de l'image
  
  TCHAR *l_NameBitmap = NULL;
  string l_strNameBitmap = "";
  l_strNameBitmap = m_Name + ".bmp";
  l_NameBitmap = ConvertStringTchar(l_strNameBitmap);//Conversion du type string en TCHAR *

  m_StaticLogo.PrintBmp(::GetDlgItem(m_hWnd, IDC_STATICGB),l_NameBitmap); //m_StaticLogo est une instance de la classe CAnyPictureControl
Merci pour votre aide
modafine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 11h26   #2
Membre confirmé
 
Inscription : décembre 2010
Messages : 99
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 99
Points : 203
Points : 203
Je n'avais jamais vu la fonction DrawState avant, donc ce que je dis n'a pas forcément de sens, mais je me fie à la doc de MSDN :

En premier on dirait que tu devrais spécifier le flag DSS_NORMAL en plus du DST_BITMAP, d'après la doc.

Ensuite, as tu essayé de dessiner autre chose que ce bitmap, genre un appel à TextOut (), juste pour vérifier que ton code s'exécute correctement jusque là ?
Enfin, tu peux aussi tester la valeur de retour de DrawState, pour vérifier une éventuelle erreur.

Edit : A y réfléchir d'ailleurs, ton code manque cruellement de vérification d'erreur. Es-tu sûr que ça ne se dessine pas, ou bien que ça ne se charge même pas ? ou bien que le GetDC échoue ???
phi1981 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 11h55   #3
Inscrit
 
Inscription : juin 2007
Messages : 149
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 149
Points : 25
Points : 25
Merci pour la réponse phi1981

J'ai essayé de voir le retour de la fonction DrawState est c'est true.
Pour le test des cas d'erreur je ne trouve pas une idée pour les fonctions LoadImage et GetDC.
Pour le TextOut () de même rien n'est affiché.
modafine est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h01.


 
 
 
 
Partenaires

Hébergement Web