begin process at 2012 05 29 19:06:26
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Graphique

 > 

pbr: afficher une image


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

pbr: afficher une image

vendredi 14 avril 2006 à 09:26:08 | pbr: afficher une image

neofenix

salut tout le monde voila je pense que mon code est bon mais kan je lance le debug et que j'insere le point d'arret juste apres le LoadImage la variable HBitmap ne s'initialise pas  ce qui fait que ne n'arrive pas a afficher mon image voila  merci
mon code:
  
 include <windows.h>
LRESULT CALLBACK MainProc(HWND hWnd, UINT messages, WPARAM wParam, LPARAM lParam)
{
   switch (messages)
   {

      case WM_PAINT:
        {
           HDC hdc;
           POINT pt;
           HBITMAP hBitmap;
           HDC hMemDC;
           PAINTSTRUCT ps;
           BITMAP bm;
           hdc = BeginPaint(hWnd, &ps);
           hBitmap = (HBITMAP) LoadImage( NULL, "d:\\but_valid.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
           hMemDC = CreateCompatibleDC (hdc);
           SelectObject (hMemDC, hBitmap);
           GetObject (hBitmap, sizeof (BITMAP), &bm) ;
           pt.x = bm.bmWidth;
           pt.y = bm.bmHeight;
           BitBlt (hdc, 0, 0, pt.x, pt.y, hMemDC, 0, 0, SRCCOPY) ;
           EndPaint (hWnd, &ps);
           break;
        }

      case WM_CLOSE:
      case WM_DESTROY:
         PostQuitMessage(0);
       break;
   }
   return DefWindowProc(hWnd, messages, wParam, lParam);
}

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
   WNDCLASSEX main;
   main.cbSize = sizeof(WNDCLASSEX);
   main.style = CS_HREDRAW|CS_VREDRAW;
   main.lpfnWndProc = MainProc;
   main.cbClsExtra = 0;
   main.cbWndExtra = 0;
   main.hInstance = hInstance;
   main.hIcon = LoadIcon(hInstance, "APPICON");
   main.hIconSm = LoadIcon(hInstance, "WINICON");
   main.hCursor = LoadCursor(NULL, IDC_ARROW);
   main.hbrBackground = (HBRUSH)(COLOR_BTNFACE+1);
   main.lpszMenuName = NULL;
   main.lpszClassName = "std";
   RegisterClassEx(&main);
   HWND hWnd;
   hWnd = CreateWindowEx(WS_EX_CLIENTEDGE, "std", "Installation", WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX, CW_USEDEFAULT, CW_USEDEFAULT, 609, 429, NULL, NULL, hInstance, NULL);
   ShowWindow(hWnd, SW_SHOW);
   MSG messages;
   
   while(GetMessage(&messages, NULL, 0, 0) == TRUE)
   {
      TranslateMessage(&messages);
      DispatchMessage(&messages);
   }
   
   return 0;
}
vendredi 14 avril 2006 à 10:40:16 | Re : pbr: afficher une image

BruNews

Administrateur CodeS-SourceS
LoadImage à mettre hors du WM_PAINT sinon appelé des centaines de fois, DeleteObject() pour libérer la mémoire.
DeleteDC est aussi manquant.

ciao...
BruNews, MVP VC++
vendredi 14 avril 2006 à 11:23:06 | Re : pbr: afficher une image

neofenix

j'ai changé au lieu de WM_PAINT c'est  WM_CREATE donc il ne sera lancé qu'une fois et je libere la memoire a la fin avec
DeleteDC(hMemDC);
ReleaseDC(hWnd,hdc);
DeleteObject(hBitmap);
mais j'ai toujours le meme probleme hBitmap est toujours null  

vendredi 14 avril 2006 à 19:14:13 | Re : pbr: afficher une image

Taron31

Membre Club
Tu dois juste mettre LoadImage dans WM_CREATE pas le reste, si c'est ton problème...

___________________
MVS
- Most Valuable Student ( Microsoft)
vendredi 14 avril 2006 à 19:19:33 | Re : pbr: afficher une image

Taron31

Membre Club
NeoFenix : le ReleaseDC n'est pas à placer puisque tu as déjà libéré le DC avec EndPaint...

___________________
MVS
- Most Valuable Student ( Microsoft)
vendredi 14 avril 2006 à 22:00:29 | Re : pbr: afficher une image

chris91

bonjour,
quel est le code renvoyé par GetLastError() ?
liste des codes :
[ Lien ]
dimanche 16 avril 2006 à 13:03:25 | Re : pbr: afficher une image

neofenix

alors j'ai enlevé le releaseDC et l'erreur retourné avec GetLastError est descripteur non valide!
dimanche 16 avril 2006 à 13:32:16 | Re : pbr: afficher une image

vecchio56

Administrateur CodeS-SourceS
Tu devrais ajouter le flag LR_DEFAULTSIZE et mettre l'instance de ton programme en premier param
Sinon un vieux LoadBitmap fera bien l'affaire, même s'il est deprecated
dimanche 16 avril 2006 à 13:51:40 | Re : pbr: afficher une image

neofenix

j'ai essayé  LoaddBitmap aussi mais j'ai le meme probleme je me demandais si c'etais  pas un probleme avec l'image que je charge
dimanche 16 avril 2006 à 13:53:41 | Re : pbr: afficher une image

vecchio56

Administrateur CodeS-SourceS
Il faut qu'elle existe, normalement il doit charger toutes les bitmaps valides.

1 2 3 4

Cette discussion est classée dans : messages, hwnd, main, hinstance, hbitmap


Répondre à ce message

Sujets en rapport avec ce message

ma fenetre ne s'affiche pas [ par graall ] Bonjour,j'un pb avec un code :#include LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM); HWND hWnd; const HBRUSH hBackground = CreateSol bmp dans static [ par Arnaud16022 ] bonjourvoila je veux mettre un bmp dans un static.dans le fichier rc ya:SniperImg BITMAP "C:/sniper.bmp"et dans le main ya (en simplifie)#include LRES Conversion HINSTANCE en HWND [ par highcobra ] probleme pour mon petit carré [ par mortaurat ] bonjour alors je debute en C et je veux faire mon petit carré .donc j'ai commancé par initialiser une fenetre opengl ce qui donne :#include LRESULT C Erreur incompréhensible et insoluble pour moi.... [ par jb60 ] Voilà, je vais inscrire le source que j'ai tapé (une partie du source plutôt). J'ai l'impression que tout est correct, mais le compilo me fait une err Comment créer un Bouton [ par new0staff ] Bonjour!Le programme ci-dessous crée et affiche une fenêtre simple. Ce que je souhaite faire, c'est rajouter un Bouton à cette fenêtre.Ce qui ne joue Application [ par Arnauti ] Bonjour, je suis nul et j'ai presque jamais fait de C/C++. Enfin, si quelque truc sous dos. Mais j'aimerais créé une aplication mais pas sous dos. Al message de la pile [ par cyber_al ] bonjoursj'ai une petitte question a poser concernant les messages de la pile ,explications:mon application principale me permet de lancer une dll avec pb avec le plein écran de DirectX que je veux enlever [ par Diabolus ] Bonjour à tous !Je souhaiterai créer une fenêtre en mode normal et tout ce que j'arrive à faire c'est du plein écran. J'aimerai enlever le plein écran siouplait la charite pour un pov newbie [ par seichettmorru ] je compile, ca marcheje lance ca me dit "impossible de communiquer avec la carte"j'ai une geforce ti+directx 8.vous etes mon dernier recours:#include


Nos sponsors


Sondage...

Comparez les prix

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 : 1,014 sec (4)

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