sleeppower Napisano Lipiec 20, 2019 Autor Zgłoś Udostępnij Napisano Lipiec 20, 2019 Czy ładowanie Bitmap do Dialog Boxa różni sie czymś od ładowania ich normalnie. A tak w ogóle czy może mi ktos powiedzieć co jest nie tak jeśli kompiluje program w którył ładuję bitmapę, nie ma żadnych błędów ale po uruchomienie aplikacji nie pokazuje mi sie obrazek. Pisze pod Dev C++ 4 Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Visage Napisano Lipiec 20, 2019 Zgłoś Udostępnij Napisano Lipiec 20, 2019 pokaz kawalek kodu to zobaczymy, gdzie jest blad :) Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
sleeppower Napisano Lipiec 20, 2019 Autor Zgłoś Udostępnij Napisano Lipiec 20, 2019 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 Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Surprise Napisano Lipiec 21, 2019 Zgłoś Udostępnij Napisano Lipiec 21, 2019 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... Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
sleeppower Napisano Lipiec 21, 2019 Autor Zgłoś Udostępnij Napisano Lipiec 21, 2019 Kurcze chyba musze miec cos naryte w systemie bo mi sie nic nie pojawia :( Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Surprise Napisano Lipiec 21, 2019 Zgłoś Udostępnij Napisano Lipiec 21, 2019 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 Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Trace Napisano Lipiec 22, 2019 Zgłoś Udostępnij Napisano Lipiec 22, 2019 Jeżeli to DialogBox, to obsłuż komunikat WM_INITDIALOG zamiast WM_CREATE i tam wczytaj bitmape. Nie jestem pewien, ale wydaje mi się, że DialogBoxy nie otrzymują komunikatu WM_CREATE... Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.