Kod:
LRESULT CALLBACK Manage (HWND hwnd, UINT message, WPARAM wpar, LPARAM lpar)
{
switch(message)
{
case WM_CREATE:
{
}
break;
case WM_SYSCOMMAND:
{
switch(wpar)
{
case SC_CLOSE:
PostQuitMessage(0);
break;
}
break;
default:
return DefWindowProc (hwnd, message, wpar, lpar);
break;
}
break;
case WM_KEYDOWN:
switch(wpar)
{
case VK_ESCAPE:
PostQuitMessage(0);
break;
}
break;
case WM_PAINT:
HDC hdc;
PAINTSTRUCT ps;
hdc = BeginPaint( hwnd, &ps );
SetTextColor (hdc, RGB(255, 96, 0));
SetBkMode(hdc, TRANSPARENT);
SetTextColor (hdc, RGB(255, 255, 255));
//TextOut(hdc, 10, 20, Text, strlen(Text));
HDC hdcc = GetDC(hwnd);
HBITMAP hbmObraz;
hbmObraz = (HBITMAP)LoadImage(NULL, "head.bmp ", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
HDC hdcNowy = CreateCompatibleDC(hdcc);
SelectObject(hdcNowy, hbmObraz);
HBITMAP hbmOld = (HBITMAP)SelectObject(hdcNowy, hbmObraz);
BITMAP bmInfo;
GetObject(hbmObraz, sizeof(bmInfo), &bmInfo);
BitBlt(hdcc, 100, 100, 400, 400, hdcNowy, 0, 0, SRCPAINT);
ReleaseDC(hwnd, hdcc);
//...
//coś tam
//...
DeleteObject(hbmObraz); //kasowanie bitmapy
SelectObject(hdcNowy, hbmOld); //przywróć bitmapę domyślną
DeleteDC(hdcNowy); //usuń kontekst razem z jego domyślną bitmapą
EndPaint( hwnd, &ps );
break;
}
}
A dokładniej:
HDC hdcc = GetDC(hwnd);
HBITMAP hbmObraz;
hbmObraz = (HBITMAP)LoadImage(NULL, "head.bmp ", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
HDC hdcNowy = CreateCompatibleDC(hdcc);
SelectObject(hdcNowy, hbmObraz);
HBITMAP hbmOld = (HBITMAP)SelectObject(hdcNowy, hbmObraz);
BITMAP bmInfo;
GetObject(hbmObraz, sizeof(bmInfo), &bmInfo);
BitBlt(hdcc, 100, 100, 400, 400, hdcNowy, 0, 0, SRCPAINT);
ReleaseDC(hwnd, hdcc);
//...
//coś tam
//...
DeleteObject(hbmObraz); //kasowanie bitmapy
SelectObject(hdcNowy, hbmOld); //przywróć bitmapę domyślną
DeleteDC(hdcNowy); //usuń kontekst razem z jego domyślną bitmapą
EndPaint( hwnd, &ps );
Ten kod pisalem podzcas czytania jednego z kursów, niby autorowi dziala - ale mi, tradycyjnie - nie.
Nie wyswietla mi na formie mojej bitmapy - czemu ?