Skocz do zawartości

Ładowanie Bitmap w Dialog Box


sleeppower

Recommended Posts

Resource:

BMP_BITMAPA                  BITMAP  DISCARDABLE  "C:/Dokumenty/Moje dokumenty/Programowanie/Moje/Tab Control/foto.bmp"

Zmienne

PAINTSTRUCT ps; // struktura do rysowania
RECT rc;
HBITMAP hBitmap;
BITMAP  bitmap;

Kod:

      case WM_CREATE:

          hBitmap = LoadBitmap (hInstance, TEXT ("BMP_BITMAPA")) ;
          GetObject (hBitmap, sizeof (BITMAP), &bitmap) ;
          return 0;

      case WM_PAINT:

          hdc = BeginPaint (hwnd, &ps) ;
          hdcMem = CreateCompatibleDC (hdc) ;
          SelectObject (hdcMem, hBitmap) ;
          BitBlt (hdc, 90, 0, bitmap.bmWidth, bitmap.bmHeight, hdcMem, 0, 0, SRCCOPY);
          SetRect(&rc, 0,90, 180,120);
          SetTextColor (hdc, RGB(12, 255, 78));
          DrawText(hdc, "Wyświetlany text", -1, &rc, DT_CENTER);
          DeleteDC (hdcMem) ;
          EndPaint (hwnd, &ps) ;
          return 0;
        break;

To chyba wszystko co potrzebne

Link do komentarza
Udostępnij na innych stronach

Jeśli chodzi o kod który pokazałeś to wydaje mi się, że ładowanie bitmapy powinieś obłuzyć w głównej funkcji WinMain (chyba miałem kiedyś taki problem..hyhy), albo w WinMain przekaż po prostu globalnemu uchytowi programu hInstance, uchyt który nadaje funkcja WinMain.
Coś mi się zdaje że nazwałeś je identycznie.

czyli

::hInstance = hInstance ;

i możesz ładować obrazki w każdym miejscu programu (no prawie)
;)

Jednak jeśli chcesz wyświetlać jakąś bitmapę to polecam zwykłą kontrolkę STATIC w której możesz łatwo to zrobić.
Przykładowy kod:

CreateWindow("STATIC", "nazwa_zasobu", WS_CHILD | WS_VISIBLE | SS_BITMAP | SS_REALSIZEIMAGE, 0, 0, 0, 0, hwnd, (HMENU) 100, hInstance, 0) ;

Jak nadasz staticowi falge SS_BITMAP to będzie on wyświetla bitmapę którą masz w zasobach (jest również SS_ICON - ikona). Nazwę podajesz jako zwykły tekst.
Flaga SS_REALSIZEIMEGE powoduje że static automatycznie zmieni swoje rozmiary wyświetlając cały obrazek...
...i to tyle...

Pozdrawiam...

Link do komentarza
Udostępnij na innych stronach

A tekst który wyświetlasz pojawia się??

Bo jeśli tak to jest błąd przy ładowaniu bitmapy, czyli wg mnie źle podany hInstance...
A jak się tekst nie pojawia to już nie wiem. Sprawdzałem twój kod w Dev 4 i napis się wyświetlał, potem załadowałem bitmapę w WinMain (albo można dać (::hInstance = hInstance) i wszystko grało.

Pozdro

Link do komentarza
Udostępnij na innych stronach

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gość
Odpowiedz...

×   Wkleiłeś zawartość bez formatowania.   Usuń formatowanie

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Utwórz nowe...