Affichage d'une image dans une boite de dialogue [Résolu]

cs_meem 12 Messages postés jeudi 17 juin 2004Date d'inscription 31 juillet 2004 Dernière intervention - 29 juil. 2004 à 12:28 - Dernière réponse : cs_meem 12 Messages postés jeudi 17 juin 2004Date d'inscription 31 juillet 2004 Dernière intervention
- 30 juil. 2004 à 08:53
Bonjour,

J'essaie d'afficher un bitmap dans une boite de dialogue sous VC++.NET.

Voici le code que j'utilise :

void InterfaceContour::OnBnClickedButton1()
{
CImage cim;
cim.Load("bip.bmp");
cim.Draw( (HDC) *GetDC(),0,0,150,100,0,0,720,576);

}

Une image totalement noire s'affiche alors sur ma boîte de dialogue.

Quelqu'un voit-il une solution ?

D'avance merci,

Cordialement,

Meem
Afficher la suite 

3 réponses

Répondre au sujet
cs_thierry la fronde 351 Messages postés mercredi 21 juillet 2004Date d'inscription 12 août 2009 Dernière intervention - 29 juil. 2004 à 15:44
+3
Utile
Peut-être que cette fonction t'aidera ?

Fonction applicable à un CBitmap !
SetBitmap( ::LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_MONBITMAP)))

D'autres infos dans la msdn.

thierry le frondeur
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_thierry la fronde
cs_imanewin32 71 Messages postés mardi 30 mars 2004Date d'inscription 12 août 2004 Dernière intervention - 29 juil. 2004 à 18:55
+3
Utile
utilise Ce code peu etre que ce t'edra:

#include <windows.h>
#include "resource.h"

//----------------------------------------------------------
// MAIN WNDPROC
//----------------------------------------------------------
LRESULT CALLBACK MainWndProc(HWND hwnd,UINT iMsg,WPARAM wParam,LPARAM lParam)
{
static int cxClient,cyClient,cxImage,cyImage;
static HDC hdcCompatible;
static HBITMAP bmp,oldBmp;

switch (iMsg)
{
case WM_CREATE:
{
HDC hdc;
BITMAP infoBmp;

hdc = GetDC(hwnd);

hdcCompatible = CreateCompatibleDC(hdc);
if(NULL (bmp LoadBitmap((HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE),MAKEINTRESOURCE(ID_BMP))))
{
return -1;
}

if(0 == GetObject(bmp,sizeof(BITMAP),(LPVOID)(&infoBmp)))
{
return -1;
}

cxImage = infoBmp.bmWidth;
cyImage = infoBmp.bmHeight;

oldBmp = SelectObject(hdcCompatible,bmp);

ReleaseDC(hwnd,hdc);

return 0;
}

case WM_SIZE:
{
cxClient = LOWORD(lParam);
cyClient = HIWORD(lParam);

InvalidateRect(hwnd,NULL,TRUE);
return 0;
}
case WM_PAINT:
{
HDC hdc;
PAINTSTRUCT ps;

hdc = BeginPaint(hwnd,&ps);

if(!BitBlt(
hdc,
(cxClient - cxImage)/2,
(cyClient - cyImage)/2,
cxImage,
cyImage,
hdcCompatible,
0,
0,
SRCCOPY
))
{
PostQuitMessage(1);
}

EndPaint(hwnd,&ps);
return 0;
}
case WM_DESTROY:
{
SelectObject(hdcCompatible,oldBmp);
DeleteObject(bmp);
DeleteDC(hdcCompatible);

PostQuitMessage(0);
return 0;
}
}

return DefWindowProc(hwnd,iMsg,wParam,lParam);
} // MainWndProc()
//----------------------------------------------------------
// WIN MAIN
//----------------------------------------------------------
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int iCmdShow)
{
MSG msg;
HWND hwnd;
WNDCLASSEX wndclass;

wndclass.cbSize = sizeof(wndclass);
wndclass.style = 0;
wndclass.lpfnWndProc = MainWndProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hInstance = hInstance;
wndclass.hIcon = NULL;
wndclass.hCursor = LoadCursor(NULL,IDC_ARROW);
wndclass.hbrBackground = (HBRUSH)(COLOR_APPWORKSPACE+1);
wndclass.lpszMenuName = NULL;
wndclass.lpszClassName = "JCD_BITMAP";
wndclass.hIconSm = NULL;

if(0 == RegisterClassEx(&wndclass))
{
return -1;
}
if(NULL (hwnd CreateWindow("JCD_BITMAP","Comment afficher une Bitmap ...",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL)))
{
return -1;
}

ShowWindow(hwnd,iCmdShow);
UpdateWindow(hwnd);

while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
} // WinMain()
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_imanewin32
cs_meem 12 Messages postés jeudi 17 juin 2004Date d'inscription 31 juillet 2004 Dernière intervention - 30 juil. 2004 à 08:53
0
Utile
Merci à tous les deux !

Cordialement,

Meem
Commenter la réponse de cs_meem

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.