Insertion d'image dans une boite de dialogue (MFC)

tigerskin Messages postés 39 Date d'inscription jeudi 26 mai 2005 Statut Membre Dernière intervention 24 juillet 2012 - 9 févr. 2006 à 10:33
tigerskin Messages postés 39 Date d'inscription jeudi 26 mai 2005 Statut Membre Dernière intervention 24 juillet 2012 - 10 févr. 2006 à 14:55
Bonjour !

Quelqu'un pourrait-il me dire quelle est la fonction qui permet d'insérer une image dans une boîte de dialogue, sachant que j'utilise les MFC ?

Merci d'avance !

Rq: Je programme sous Visual 6

6 réponses

wxccxw Messages postés 755 Date d'inscription samedi 15 mai 2004 Statut Membre Dernière intervention 30 janvier 2011
9 févr. 2006 à 13:35
utilise une resource :)
tigerskin Messages postés 39 Date d'inscription jeudi 26 mai 2005 Statut Membre Dernière intervention 24 juillet 2012
9 févr. 2006 à 13:59
Le problème c'est que l'image ne sera pas fixe donc je ne peux pas utiliser de resource...

L'image sera un fichier JPEG qui changera selon les autres fichiers que je chargerai dans la boite de dialogue, parce qu'avec une seule image en statique c'est simple

Merci d'avance !
wxccxw Messages postés 755 Date d'inscription samedi 15 mai 2004 Statut Membre Dernière intervention 30 janvier 2011
9 févr. 2006 à 15:14
oui c'est vrai que ce serait plus facile mais tu utilise un "parcourir" qui ouvre ton image ?
tigerskin Messages postés 39 Date d'inscription jeudi 26 mai 2005 Statut Membre Dernière intervention 24 juillet 2012
9 févr. 2006 à 15:53
Non en fait je la charge depuis une base de données...

La connexion se passe bien mais c'est juste l'affichage que je n'arrive pas à faire : je ne sais pas quelle fonction utiliser

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

Posez votre question
cs_izou Messages postés 29 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 14 avril 2008
9 févr. 2006 à 19:18
Salut
j'ai une methode mais pour afficher une Bitmap a partir du fichier peut etre tu peu la faire pour une base de donées
je vais te donne un example et je croit qu'il va être utils
cree une variable mombre ici m_bm de type CBitmap
et une variable m_chemin de type CString
et met un bouton dans la dialog qui va nous permetre de selectionné le fichier
et attache cette procedure a l'événement ON_CLICK

void CBitmapDlg::OnBmpOpen()
{
// TODO: Add your command handler code here

static char BASED_CODE szFilter[] ="Fichier Bitmap (*.bmp)|*.bmp||";


//Crée une boite de dialogue
CFileDialog m_DialFile(TRUE,".bmp",m_Chemin,
OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,szFilter);


//On affiche la boite de dialoque "Ouvrire"
if(m_DialFile.DoModal()==IDOK)
{


//Récupére le nom de l'image
m_Chemin=m_DialFile.GetPathName();


//CHARGER L 'IMAGE SELECTIONNEE
HBITMAP hBitmap =(HBITMAP)::LoadImage(AfxGetInstanceHandle(),m_Chemin,IMAGE_BITMAP,
0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);


//Si le handel est valide
if(hBitmap)
{
//Suprime le bitmap courant
if(m_Bm.DeleteObject())
//SI IL EXISTE UNE IMAGE LA DETACHER
m_Bm.Detach();


m_Bm.Attach(hBitmap);
};
Invalidate();
}

}

et crée une autre procédure qui affiche le bitmap
void CBitmapDlg::AfficheBmp(CDC *pdc)
{


BITMAP bm;
m_Bm.GetBitmap(&bm); //On récupère l'image chargée
CDC mdc;
mdc.CreateCompatibleDC(pdc);

//Sélectionne le bitmap dans un DC compatible
CBitmap * lOldBitmap = (CBitmap*) mdc.SelectObject(m_Bm);


// Calcule des coordonées
CRect lRect;
GetClientRect(lRect);
lRect.NormalizeRect();


//Copie le bitmap dans la fenêtre et le redimensionne


pdc->SetStretchBltMode(COLORONCOLOR); //Pour avoir une meilleur qualite
pdc->StretchBlt(10,10,lRect.Width()-20,lRect.Height()-20,&mdc,0,0,bm.bmWidth,bm.bmHeight,SRCCOPY);

}

puis dans la fonction OnPaint tu fait appelle a la fonction AfficheBmp

void CBitmapDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting


SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);


// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;


// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
if(m_Chemin!="")
{
CPaintDC dc(this);
AfficheBmp(&dc);
};
CDialog::OnPaint();
}
}
tigerskin Messages postés 39 Date d'inscription jeudi 26 mai 2005 Statut Membre Dernière intervention 24 juillet 2012
10 févr. 2006 à 14:55
Ok j'ai enregistré ton exemple ça m'a l'air assez simple...

Je te remercie je pense que ça va beaucoup m'aider !
Rejoignez-nous