Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2162 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [Visual C++] Comment afficher un BMP ??

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Visual C++] Comment afficher un BMP ??

n°139683
Fanta
Le Coca-Coolique
Posté le 16-05-2002 à 10:55:08  profilanswer
 

Bonjour,  
 
Je cherche depuis quelques jours le moyen d'afficher sous Visual C++ 6.0 d'afficher un BMP en passant en parametre son path (ce n'est donc pas une ressource).
 
Je précise que je débute et que des explications me serais les bienvenues !!! :D
 
Merci d'avance

mood
Publicité
Posté le 16-05-2002 à 10:55:08  profilanswer
 

n°139694
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 16-05-2002 à 11:04:33  profilanswer
 

Avec la fonction LoadImage()
 
http://msdn.microsoft.com/library/ [...] e_9fhi.asp


---------------
J'ai un string dans l'array (Paris Hilton)
n°139697
Fanta
Le Coca-Coolique
Posté le 16-05-2002 à 11:07:10  profilanswer
 

Merci pour ta réponse mais j'arrive pas a l'utiliser !  :pt1cable:  
Aurais tu un exemple car moi je rame !!  :??:  
 
Merci d'avance !  :jap:

n°139709
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 16-05-2002 à 11:17:05  profilanswer
 

Oui, bien sur  :D
Accroche toi aux branches  :lol:  

Code :
  1. #include <windows.h>
  2. HBITMAP g_hBitmap;
  3. BITMAP g_bmp;
  4. LRESULT CALLBACK WndProc(
  5. HWND hwnd,
  6. UINT msg,
  7. WPARAM wParam,
  8. LPARAM lParam
  9. )
  10. {
  11. HDC hdc, hMemDC;
  12. PAINTSTRUCT ps;
  13. switch(msg)
  14. {
  15. case WM_CREATE:
  16.  MessageBox(
  17.   hwnd,
  18.   "Une image C:\test.bmp doit exister.",
  19.   "BMP Test",
  20.   MB_OK );
  21.  g_hBitmap = LoadImage(
  22.      NULL,
  23.      "C:\\test.bmp",
  24.      IMAGE_BITMAP,
  25.      0, 0,
  26.      LR_LOADFROMFILE
  27.     );
  28.  GetObject(g_hBitmap, sizeof(g_bmp), &g_bmp);
  29.  return 0;
  30. case WM_PAINT:
  31.  hdc = BeginPaint(hwnd, &ps);
  32.  if(!hdc) return -1;
  33.  hMemDC = CreateCompatibleDC(hdc);
  34.  SelectObject(hMemDC, g_hBitmap);
  35.  BitBlt(
  36.   hdc,
  37.   0, 0,
  38.   g_bmp.bmWidth, g_bmp.bmHeight,
  39.   hMemDC,
  40.   0, 0,
  41.   SRCCOPY );
  42.  EndPaint(hwnd, &ps);
  43.  return 0;
  44. case WM_DESTROY:
  45.  PostQuitMessage(0);
  46.  return 0;
  47. } return DefWindowProc(hwnd, msg, wParam, lParam);
  48. }
  49. int WINAPI WinMain(
  50. HINSTANCE hInst,
  51. HINSTANCE hPrev,
  52. LPSTR lpszCmdLine,
  53. int nCmdShow
  54. )
  55. {
  56. static const char lpszClassName[] = "Bitmap Test";
  57. WNDCLASSEX wndclass;
  58. HWND hwnd;
  59. MSG msg;
  60. ZeroMemory(&wndclass, sizeof(wndclass));
  61. wndclass.cbSize = sizeof(wndclass);
  62. wndclass.lpfnWndProc = WndProc;
  63. wndclass.hInstance = hInst;
  64. wndclass.hIcon = (HICON)LoadIcon(NULL, IDI_APPLICATION);
  65. wndclass.hCursor = (HCURSOR)LoadCursor(NULL, IDC_ARROW);
  66. wndclass.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
  67. wndclass.lpszMenuName = NULL;
  68. wndclass.lpszClassName = lpszClassName;
  69. wndclass.hIconSm = (HICON)LoadIcon(NULL, IDI_APPLICATION);
  70. if(!RegisterClassEx(&wndclass))  return -1;
  71. hwnd = CreateWindow(
  72.    lpszClassName,
  73.    lpszClassName,
  74.    WS_OVERLAPPEDWINDOW,
  75.    CW_USEDEFAULT,
  76.    CW_USEDEFAULT,
  77.    CW_USEDEFAULT,
  78.    CW_USEDEFAULT,
  79.    NULL,
  80.    NULL,
  81.    hInst,
  82.    NULL
  83.   );
  84. if(!hwnd)  return -1;
  85. ShowWindow(hwnd, nCmdShow);
  86. UpdateWindow(hwnd);
  87. while(GetMessage(&msg, NULL, 0, 0))
  88. {
  89.  TranslateMessage(&msg);
  90.  DispatchMessage(&msg);
  91. }
  92. return msg.wParam;
  93. }


Ce code ouvre une fenêtre et affiche l'image C:\Test.bmp dans cette fenêtre.
 
A+

 

[jfdsdjhfuetppo]--Message édité par Harkonnen le 16-05-2002 à 11:18:43--[/jfdsdjhfuetppo]


---------------
J'ai un string dans l'array (Paris Hilton)
n°139720
Fanta
Le Coca-Coolique
Posté le 16-05-2002 à 11:27:29  profilanswer
 

Merci bien je v tester ca !!!  
THX :D

n°139722
Willyzekid
Posté le 16-05-2002 à 11:28:46  profilanswer
 

Harkonnen a écrit a écrit :

Oui, bien sur  :D
Accroche toi aux branches  :lol:  
[code]
#include <windows.h>
 
HBITMAP g_hBitmap;
BITMAP g_bmp;
 
LRESULT CALLBACK WndProc(
 HWND hwnd,
 UINT msg,
 WPARAM wParam,
 LPARAM lParam
 )
{
 HDC hdc, hMemDC;
 PAINTSTRUCT ps;
 
 switch(msg)
 {
 case WM_CREATE:
  MessageBox(
   hwnd,
   "Une image C:\test.bmp doit exister.",
   "BMP Test",
   MB_OK );
 
  g_hBitmap = LoadImage(
      NULL,
      "C:\\test.bmp",
      IMAGE_BITMAP,
      0, 0,
      LR_LOADFROMFILE
     );
 
  GetObject(g_hBitmap, sizeof(g_bmp), &g_bmp);
 
  return 0;
 
 case WM_PAINT:
  hdc = BeginPaint(hwnd, &ps);
  if(!hdc) return -1;
 
  hMemDC = CreateCompatibleDC(hdc);
  SelectObject(hMemDC, g_hBitmap);
  BitBlt(
   hdc,
   0, 0,
   g_bmp.bmWidth, g_bmp.bmHeight,
   hMemDC,
   0, 0,
   SRCCOPY );
 
  EndPaint(hwnd, &ps);
  return 0;
....




 
C'est moche de mettre ca dans un WM_PAINT :D


---------------
Horizon pas Net, reste à la buvette!!
n°139723
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 16-05-2002 à 11:29:55  profilanswer
 

Willyzekid a écrit a écrit :

 
 
C'est moche de mettre ca dans un WM_PAINT :D  




Dans quoi tu le mettrais ?


---------------
J'ai un string dans l'array (Paris Hilton)
n°139730
Fanta
Le Coca-Coolique
Posté le 16-05-2002 à 11:40:09  profilanswer
 

Je te remerci bien mais je doit etre mové car j'y arrive pas  :??:  
 
Serai t-il possible d'avoir directement les .cpp et .h car moi je rame  :gun:  
 
Mon mail : bndelu@hotmail.com
 
Merci d'avance

 

[jfdsdjhfuetppo]--Message édité par fanta le 16-05-2002 à 11:40:28--[/jfdsdjhfuetppo]

n°139732
Fanta
Le Coca-Coolique
Posté le 16-05-2002 à 11:41:44  profilanswer
 

Willyzekid , tu aurai une autre solution ????
 
Merci d'avance pour vos réponses :D

n°139734
Willyzekid
Posté le 16-05-2002 à 11:43:04  profilanswer
 

En fait, WM_PAINT et surtout les fonctions (BeginPaint et EndPaint) qui lui sont associés sont bonnes pour la plupart des applications mais dès que tu fais du graphisme, c'est plus le top (!?). J'ai remarqué que tout cela était bien trop lent (bien que nécessaire). En général, l'interaction avec Windows ralentie une application...
 
Donc dès que besoin de perf (assez rarement :D), j'utilise:
HDC GetDC(HWND)
int ReleaseDC(HWND, HDC)
dans une fonction séparée...
 
J'ai vu ca dans les exemples de DirectX


---------------
Horizon pas Net, reste à la buvette!!
mood
Publicité
Posté le 16-05-2002 à 11:43:04  profilanswer
 

n°139735
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 16-05-2002 à 11:43:43  profilanswer
 

comment ça t'y arrives pas ?  :??:  
 
tu créé une image "test.bmp" sur C:\, tu créé un projet win32 application dans vc++, tu ajoutes un nouveau fichier source dans ce projet, tu fais un copier/coller de mon source dans ce fichier, puis tu fais F9 pour lancer la compilation...
 
et le seul .h c'est windows.h, fourni avec VC++


---------------
J'ai un string dans l'array (Paris Hilton)
n°139738
Willyzekid
Posté le 16-05-2002 à 11:44:12  profilanswer
 

fanta a écrit a écrit :

Je te remerci bien mais je doit etre mové car j'y arrive pas  :??:  
 
Serai t-il possible d'avoir directement les .cpp et .h car moi je rame  :gun:  
 
Mon mail : bndelu@hotmail.com
 
Merci d'avance  
 
 




 
heu...t'as déjà fait de la programmation windows ou tu débute?


---------------
Horizon pas Net, reste à la buvette!!
n°139741
Willyzekid
Posté le 16-05-2002 à 11:45:57  profilanswer
 

Willyzekid a écrit a écrit :

 
 
heu...t'as déjà fait de la programmation windows ou tu débute?  




 
Si tu débute, y a ce site :
http://www.winprog.org/tutorial/
 
Ca a l'air d'avancer pas à pas et y a de l'affichage de bitmap à la fin. Mais pour ca t'as besoin de connaitre un peu les bases.


---------------
Horizon pas Net, reste à la buvette!!
n°139744
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 16-05-2002 à 11:47:03  profilanswer
 

Willyzekid a écrit a écrit :

 
Donc dès que besoin de perf (assez rarement :D), j'utilise:
HDC GetDC(HWND)
int ReleaseDC(HWND, HDC)
dans une fonction séparée...
 
J'ai vu ca dans les exemples de DirectX  




 :jap:  
 
De toute façon, j'utilise jamais le GDI pour afficher des images, c'est bien trop lent, je passe par DirectDraw (Ou DirectGraphics)
 
Mais bon, vu son niveau, je vais pas le lancer dans DirectX...  :)


---------------
J'ai un string dans l'array (Paris Hilton)
n°139796
Fanta
Le Coca-Coolique
Posté le 16-05-2002 à 13:08:27  profilanswer
 

Encore merci pour vos réponse !
En fait le programme marche tout seul dans un nouveau projet.
Mais l'utilisation que je ve en faire c de l'integrer dans mon projet existant qui est une application MFC.
 
En fait je fé de la stéganographie et je voulais afficher l'image d'origine et le résultat avec les informations stokées dedans.
 
Le fait ke cela m'ouvre une autre Boite de dialoque ne me dérange pas.
 
Comment transformer le code pour en faire une fonction.
car la si je copie/colle le contenu du .c dans ma fonction il genere des erreurs de hInst et hWnd  :sweat:  
 
Merci en tout cas pour vos conseils !  :jap:

n°139859
Fanta
Le Coca-Coolique
Posté le 16-05-2002 à 14:44:29  profilanswer
 

Up plizz  
 :bounce:  :bounce:  :bounce:  :bounce:  
 
 :jap:  :jap:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [Visual C++] Comment afficher un BMP ??

 

Sujets relatifs
Source d'une erreur dans Visual c++[RCH] Pong tout simple en visual basic
[newbie] quel programme pour faire du visual basic et ou le pécho?[C++/Direct X] Comment afficher une image ?
Trouver les specs du BMPCherche cours débutant d'algorithme et de visual basic?
[ HTML ou JAVASCRIPT... ] Afficher un champ...Comment agrandir le zone client dun dialog based sous visual C++?
[asm 386] afficher un chiffre a l'ecran ?[java] afficher une page html à l'intérieur d'une applet
Plus de sujets relatifs à : [Visual C++] Comment afficher un BMP ??


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR