LoadBitmap

Signaler
Messages postés
4
Date d'inscription
samedi 22 novembre 2003
Statut
Membre
Dernière intervention
27 avril 2004
-
Messages postés
4
Date d'inscription
samedi 22 novembre 2003
Statut
Membre
Dernière intervention
27 avril 2004
-
Bonjour, Je suis en MFC, je souhaite afficher une image de diode verte lorsque je clique su un bouton et une rouge a la place de la verte, lorsque je reclique sur le bouton. Mais lorsque je clique une nouvelle fois sur le bouton pour réafficher la verte, plantage au niveau du LoadBitmap. Je suppose que cela doit être du au fait que l’image est déjà chargée.
Le problème se pose aussi quand je ferme la fenêtre et que je la rouvre.

Savez vous comment faire une sorte de UnLoadBitmap ?

Voici mon code :

void CAutoDlg::Vert()
{
m_Vert.LoadBitmap(IDB_VERT);

CDC * pDC = GetDC(); //Obtient le contexte de dessin courant
CDC dcMemoire_V; //Crée un Contexte Mémoire
dcMemoire_V.CreateCompatibleDC(pDC); //Rend le contexte mémoire compatible avec le contexte d'écran
dcMemoire_V.SelectObject(&m_Vert); // Sélectionne l'image dans le contexte mémoire

pDC->BitBlt(50,18,40,40,&dcMemoire_V,0,0,SRCCOPY);

ReleaseDC(pDC); //Rend le contexte d'affichage au systéme
}

void CAutoDlg::Rouge()
{
m_Rouge.LoadBitmap(IDB_ROUGE);

CDC * pDC = GetDC(); //Obtient le contexte de dessin courant
CDC dcMemoire_R; //Crée un Contexte Mémoire
dcMemoire_R.CreateCompatibleDC(pDC); //Rend le contexte mémoire compatible avec le contexte d'écran
dcMemoire_R.SelectObject(&m_Rouge); // Sélectionne l'image dans le contexte mémoire

pDC->BitBlt(50,18,40,40,&dcMemoire_R,0,0,SRCCOPY);

ReleaseDC(pDC); //Rend le contexte d'affichage au systéme
}

Merci d’avance a toute personne pouvant m’aider.
A voir également:

3 réponses

Messages postés
55
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
7 décembre 2004

Je sais pas comment le faire en VC, mais sous borland c'est assez simple:

1/ Tu charges l'image, mais l'option Visible est false
2/ Lors du click tu la rends visible
3/ lors du reclick tu la rends de nouveau invisible

et tu decharges la bitmap que lorsqu'elle te serve plus :)

T'as essayé cette methode? :p
Messages postés
55
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
7 décembre 2004

Tiens, un petit exemple en bcb (borland c++ builder):

//Quand on appui sur le Button1
void __fastcall TForm1::Button1Click(TObject *Sender)
{
//On rends l'image visible
Form1->Image1->Visible = true;
}
//---------------------------------------------------------------------------
//Lors de la création de la form
void __fastcall TForm1::FormCreate(TObject *Sender)
{
//On charge l'image
Form1->Image1->Picture->LoadFromFile("monimage.bmp");
//On rends l'image invisible
Form1->Image1->Visible = false;
}


Donc, voilà, c'est assez simple, l'image est chargée et rendue invisible, l'utilisateur ne la voit pas, quand tu cliques sur le boutton, on l'affiche.. c'est pas la peine de charger et decharger million de fois.
Messages postés
4
Date d'inscription
samedi 22 novembre 2003
Statut
Membre
Dernière intervention
27 avril 2004

Je viens de remarquer qu'il y a un code source !

J'aurais du chercher avant de poser la question. :shy)

Merci quand même bdkiller.