[WinApi] Prosta bitmapa; tło aplikacji

0

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 ?

0

a masz plik: "head.bmp " (spacje)

BTW
zla kolejnosc, powinno byc

SelectObject(hdcNowy, hbmOld); //przywróć bitmapę domyślną
DeleteObject(hbmObraz); //kasowanie bitmapy
DeleteDC(hdcNowy); //usuń kontekst razem z jego domyślną bitmapą
0

To jak już jesteśmy przy tym temacie, to może wiesz, jak wrzucić *.jpg zamiast *.bmp ? : P

1 użytkowników online, w tym zalogowanych: 0, gości: 1