Stoppt die Vorratsdatenspeicherung! Jetzt klicken && handeln!Willst du auch bei der Aktion teilnehmen? Hier findest du alle relevanten Infos und Materialien:
 
BMP dynamisch laden
von Plapperkatze am 1.Februar 2006 um 18:29
zurück zur Kategorie "Tutorials"

Um zur Laufzeit ein Bitmap zu laden und darzustellen, kann man folgenden Code verwenden:
#include <windows.h>
//-----------------------------------------------------------------
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
//-----------------------------------------------------------------
const char szAppName[] = "load a bitmap";
//-----------------------------------------------------------------
HBITMAP hBmp;
//-----------------------------------------------------------------
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
 MSG msg;
 HWND hWnd;
 WNDCLASS wc;
 
 wc.style = CS_HREDRAW | CS_VREDRAW;
 wc.lpfnWndProc = WndProc;
 wc.cbClsExtra = 0;
 wc.cbWndExtra = 0;
 wc.hInstance = hInstance;
 wc.hCursor = LoadCursor(NULL, IDC_ARROW);
 wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
 wc.hbrBackground = (HBRUSH) GetStockObject(BLACK_BRUSH);
 wc.lpszClassName = szAppName;
 wc.lpszMenuName = NULL;

 RegisterClass(&wc);

 hWnd = CreateWindow( szAppName,
 szAppName,
 WS_OVERLAPPEDWINDOW,
 112,84,800,600,
 NULL,
 NULL,
 hInstance,
 NULL);

 ShowWindow(hWnd, iCmdShow);
 UpdateWindow(hWnd);

 while (GetMessage(&msg, NULL, 0, 0))
 {
   TranslateMessage(&msg);
   DispatchMessage(&msg);
 }
 return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
 switch (message)
 {
   case WM_CREATE:
   {
     hBmp=(HBITMAP)LoadImage(NULL,"test.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
   }
   case WM_PAINT:
   {

     PAINTSTRUCT ps;
     HDC hdcTarget = BeginPaint(hWnd, &ps);

     HDC hdcBitmap = CreateCompatibleDC(hdcTarget);
     HBITMAP hbmOld = (HBITMAP)SelectObject( hdcBitmap,hBmp);

     BitBlt( hdcTarget,0,0,320,240, hdcBitmap,0,0, SRCCOPY );

     // und aufräumen
     SelectObject( hdcBitmap, hbmOld );

     DeleteDC( hdcBitmap );
     EndPaint(hWnd, &ps);

     return 0;
   }
   case WM_DESTROY:
   {
     PostQuitMessage(0);
     return 0;
   }
 }
return DefWindowProc(hWnd, message, wParam, lParam);
}

HBITMAP hBmp ist globale Variable, die nach WM_CREATE auf ein Bitmap im Speicher zeigt. Bei einer WM_PAINT Nachricht wird es in unser Fenster gezeichnet.

grüsse, die plapperkatz

zurück zur Kategorie "Tutorials"
[0 Kommentare]

Name


Kommentar




Bitte abtippen


 
(C) 2006-20012 Plapperkatze - 220706 Besucher seit dem 23.01.2012 Login