begin process at 2012 05 29 07:50:34
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

LoadImage DevC++


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

LoadImage DevC++

mardi 30 septembre 2003 à 09:25:50 | LoadImage DevC++

guitoulefoux

Bonjour,

Je cherche a mettre un fond d'écran dans ma form.
Pour cela il faudrait que j'utilise loadimage.
Je pense déjà avoir pas bien avancé (Merci BruNew) mais j'ai encore une erreur.
Voici le detail de mon code :

1/ Edit ressource file :
Image1 BITMAP PRELOAD DISCARDABLE "D:/os1.bmp"

2/ Déclaration de mes variables :
PAINTSTRUCT ps;
RECT rect;
HRSRC hrsrc;
HGLOBAL hgbl;
HDC hdc, hdc2;
BYTE *data;

3/ Lancement de Loadimage: (mon compilateur détecte une erreur sur cette ligne)
ShowWindow(hwnd, nFunsterStil);
hrsrc = LoadImage(hwnd,"Image1", IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION);
UpdateWindow(hwnd);

4/ Création du contexte de périphérique :
case WM_PAINT:
hdc = BeginPaint( hwnd, &ps );
GetClientRect(hwnd,&rect);
hgbl = LoadResource(0, hrsrc);
data = (BYTE*) LockResource(hgbl);
FreeResource(hgbl);
hdc2 = CreateCompatibleDC(hdc);
SelectObject(hdc2, data);
StretchBlt(hdc,0,0,400,400,hdc2,0,0,400,400, SRCCOPY);
DeleteDC(hdc2);
EndPaint(hwnd,&ps);
break;

Voilà, si quelqu'un peut encore m'aider.
Ou m'expliquer comment on charge une image dans un fichier ressource incorporé dans mon exécutable.

PS : J'utilise DevC++

Merci

mardi 30 septembre 2003 à 10:07:27 | Re : LoadImage DevC++

BruNews

Administrateur CodeS-SourceS
Dans WM_INITDIALOG:
ressorts un HBITMAP de LoadImage(...) avec un cast.

WM_PAINT:
SelectObject(hdc2, hbmp);

Tout ceci est a VIRER:
hgbl = LoadResource(0, hrsrc);
data = (BYTE*) LockResource(hgbl);
FreeResource(hgbl);

BruNews, ciao...
mardi 30 septembre 2003 à 19:05:14 | Re : LoadImage DevC++

guitoulefoux

Grace a tes indications voici le nouveau code.
Il n'y a pas d'erreur sur la compilation mais rien ne s'affiche.
Voici le code
[.]
PAINTSTRUCT ps;
RECT rect;
HGLOBAL hgbl;
HDC hdc, hdc2;
[.]
case WM_INITDIALOG:
hgbl=(HBITMAP)LoadImage(0,"MyResource1", IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION); // Je pense qu'a la place du 0 il me faut le handle de mon application mais je sais pas comment l'avoir.
break;

case WM_PAINT:
hdc = BeginPaint( hwnd, &ps );
GetClientRect(hwnd,&rect);
hdc2 = CreateCompatibleDC(hdc);
SelectObject(hdc2, hgbl); // La aussi ca doit pas etre hgbl
StretchBlt(hdc,0,0,400,400,hdc2,0,0,400,400, SRCCOPY);
DeleteDC(hdc2);
EndPaint( hwnd, &ps );
break;
[.]

Merci pour ta patience et ton aide BruNew.

mardi 30 septembre 2003 à 19:13:21 | Re : LoadImage DevC++

BruNews

Administrateur CodeS-SourceS
handle de mon application = 1er param de WinMain.
BruNews, ciao...
mardi 30 septembre 2003 à 19:37:29 | Re : LoadImage DevC++

guitoulefoux

OK,
Donc mon handle c'est:
Hwnd //HWND hwnd; /* This is the handle for our window */

Au debut j'ai mis:
hgbl=(HBITMAP)LoadImage(hwnd,"MyResource1", IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION);
Mais j'avais l'erreur:
75 untitled1.cpp type `HINSTANCE__' is not a base type for type `HWND__'

Donc j'ai fais :
hgbl=(HBITMAP)LoadImage((HINSTANCE)hwnd,"MyResource1", IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION);
Et la plus de problème ça compile. Mais toujours rien qui s'affiche.

Je pense que le pb vient de :
SelectObject(hdc2, hgbl); // HGLOBAL hgbl; ne doit pas servir a ca.

Qu'en penses tu ?
mardi 30 septembre 2003 à 19:43:45 | Re : LoadImage DevC++

BruNews

Administrateur CodeS-SourceS
1er param de WinMain !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
et NON de WndProc.
WinMain() est le point d'entree d'un prog win32.
Regarde dans mes sources comment est WinMain.
BruNews, ciao...
mardi 30 septembre 2003 à 22:52:49 | Re : LoadImage DevC++

guitoulefoux

Oui au debut j'avais mis:
hgbl=(HBITMAP)LoadImage(hThisInstance,"Image1", IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION);

Je m'etait repéré par rapport a :
int WINAPI WinMain(HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nFunsterStil)

Mais j'avais des erreurs:
`hThisInstance' undeclared (first use this function)
(Each undeclared identifier is reported only once
for each function it appears in.)

Je comprends pas pourquois il me met ce message



mardi 30 septembre 2003 à 23:06:20 | Re : LoadImage DevC++

BruNews

Administrateur CodeS-SourceS
HINSTANCE hinst;
HBITMAP hbmp;


hbmp = =(HBITMAP)LoadImage(hinst, ....);


int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE a, LPSTR b, int c)
{
hinst = hinstance;
}

BruNews, ciao...
mardi 30 septembre 2003 à 23:07:02 | Re : LoadImage DevC++

BruNews

Administrateur CodeS-SourceS
ERREUR DE FRAPPE? RECTIF:
hbmp = (HBITMAP)LoadImage(hinst, ....);
BruNews, ciao...
mardi 30 septembre 2003 à 23:30:19 | Re : LoadImage DevC++

guitoulefoux

OK,
J'avais pensé a "hinst" mais dans mon code c'est sous cette forme:
WNDCLASSEX wincl;
int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE a, LPSTR b, int c)
{
wincl.hInstance = hThisInstance;
}

Je n'avais pas pensé a:
HBITMAP hbmp;

Pour etre sur j'ai refais en plus une variable avec l'exemple que tu m'as donné.
A la compilation pas d'erreur mais a l'affiche rien ....

J'ai vu dans tes sources que tu chargeais l'image en mémoire.
Je n'ai pas l'impression de faire ca .... a priori il faut faire quelquechose avant le:
SelectObject(.....)

Qu'en penses tu ?

1 2

Cette discussion est classée dans : hwnd, hdc, ps, hdc2, loadimage


Répondre à ce message

Sujets en rapport avec ce message

DevC++ Fond d'ecran. [ par guitoulefoux ] Bonjour,Je cherche a afficher un fond d'ecran dans ma form.Grace a BruNews a qui je dis un grand merci ( je te paye une mousse quand tu veux), j'ai pu problème avec bitblt [ par gregory6 ] GringoBonjour,je suis développeur débutant sous visual C++ et les MFC. Je cherche à afficher le contenu d'un répertoire sur une page graphique que je HELP!! comment rafraichir [ par kuruma ] LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){   static string chemin;  static int count=0;  static bool se Affichage bitmap [ par gregory6 ] GringoBonjour, je suis débutant ss visual C++ et j'aurai besoin d'un peu d'aide. Je crée un projet MFC ds lequel je crée une fenetre. Cette fenetre cr Fenetre au premier plan [ par SnOOpss ] Bonjour suite a mon probleme de capture d'ecran on resolu (cf http://www.cppfrance.com/forum.v2.aspx?ID=631298) j'ai essayé de prendre mon probleme au [api]Plusieurs images dans un dcMem, ou plusieurs dcMem [ par hoGan ] Bonjour à tous,j'aimerais pouvoir afficher plusieurs images l'une à la suite de l'autre en cliquant plusieurs fois sur un bouton. Voici la façon dont Inserer les images dans l'executable [ par juju0169 ] Bonjour à tous!!!Je voudrais savoir si quelqu'un pourrait l'aider à adapter cette fonction (qui marche) pour ne plus specifie l'adresse de mes images Update screen win32 [ par MoDDiB ] Voilà j'ai un problème avec le rafraichissement de ma fenêtre en win32 je m'explique : je dessine une ligne à l'aide de :             HDC      &nbsp Contrôle windows sur surface DirectDraw [ par rom2n ] Bonjours a tous, je suis en train de développer un jeu en 2D avec DirectDraw et je voulais savoir comment on pouvais affiché un contrôle windows sur u BitBlt me fait chier [ par vecchio56 ] J'ai crée un projet par défaut avec vs.Les seuls trucs que j'ai fait sont créer un HDC hdc2 en variable globale, et dans le WM_PAINT j'ai mis:case WM_


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,686 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales