hbitmap się nie wczytuje

hbitmap się nie wczytuje
NI
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 535
0

Mam taki głupi problem. Wczytuję bitmapę hBitmap funkcją loadimage i za każdym razem bitmapa się nie wczytuje tylko dlaczego? GetLastError() zwraca 0.

Kopiuj
hBitmap bitmap
bitmap=(HBITMAP)LoadImage(NULL,"image.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
cout << GetLastError() << endl;
if (bitmap==NULL)
{
     cout << "bitmap not loaded" << endl;
}

po wykonaniu tej funkcji na ekranie pojawiają się 2 linijki:
0
bitmap not loaded

06
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2440
0

Daj pełną ścieżkę do pliku.

NI
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 535
0

no dałem i pisze w ostrzeżeniach że nie ma czegoś takiego jak \g i takie podobne... i nadal nie działa pokazuje dokładnie to samo w konsoli

06
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2440
0

\ to znak specjalny, w literałach musisz go powtórzyć, żeby był traktowany jako zwykły znak, czyli: C:\\folder\\plik.ext.

NI
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 535
0

tą opcję też przerobiłem i efekt nadal ten sam

06
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2440
0

Pokaż kod.

NI
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 535
0
Kopiuj
hBitmap bitmap
bitmap=(HBITMAP)LoadImage(NULL,"G:\\C++\\glass\\image.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
cout << GetLastError() << endl;
if (bitmap==NULL)
{
     cout << "bitmap not loaded" << endl;
} 
06
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2440
0

Kod wygląda ok. Nie wiem, dlaczego nie ładuje bitmapy. Spróbuj jeszcze tak:

Kopiuj
bitmap = (HBITMAP)LoadImage(NULL, TEXT("G:\\C++\\glass\\image.bmp"), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);

Choć nie spodziewam się, żeby to coś zmieniło (gdybyś dał literał złego typu, wyszłoby przy kompilacji).

NI
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 535
0

czy jest inny sposób na załadowanie bitmapy z pliku? chcę wyświetlić bitmapę na całe okno, ale nawet nie mogę jej załadować :(

Azarien
  • Rejestracja: dni
  • Ostatnio: dni
0

czy jest inny sposób na załadowanie bitmapy z pliku?
WIC (Windows Imaging Component) albo Gdi+. Obie biblioteki mają taką przewagę nad LoadImage, że obsługują różne formaty (png, jpg, także niestandardowe jeśli zainstalowano w systemie odpowiedni kodek).

cout << GetLastError() << endl;

Tak się nie robi.

Kopiuj
DWORD err = GetLastError();
cout << err << endl;
06
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2440
0

czy jest inny sposób na załadowanie bitmapy z pliku?

Szukanie innego sposobu jest o tyle bez sensu, że LoadImage powinno Ci załadować zwykła bitmapę bez problemu. Jeśli tego nie robi, to może z samą bitmapą jest coś nie tak? Sprawdzałeś z inną?

Azarien napisał(a)

cout < GetLastError() < endl;

Tak się nie robi.

Kopiuj
DWORD err = GetLastError();
cout << err << endl;

Pojedyncze < to tylko w powiadomieniach mailowych są, bo na forum poprawnie jest.

mwl4
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 404
0

Możesz spróbować takich flag użyć: LR_CREATEDIBSECTION | LR_LOADFROMFILE

NI
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 535
0

nie, dalej nie ładuje sie... nie ogarniam tego błędu, bitmapę moge normalnie otworzyć za pomocą gimpa lub innego programu, nie zwraca błędu że plik nie istnieje

KA
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Gorlice
0
Niikelion napisał(a):
Kopiuj
hBitmap bitmap
bitmap=(HBITMAP)LoadImage(NULL,"image.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
cout << GetLastError() << endl;
if (bitmap==NULL)
{
     cout << "bitmap not loaded" << endl;
}

A pod czym Ty to kompilujesz, bo tam nie ma średnika po deklaracji zmiennej bitmap VS sobie na takie coś nie pozwoli ale może jakiś kompilator to jakoś dziwnie interpretuje... no chyba że zapomniałeś na forum wstawić? Poza tym kod jest poprawny i powinien ładować bitmapę jeżeli nie jest uszkodzona i jeżeli jest bitmapą a nie grafiką w innym formacie a tylko ze zmienionym rozszerzeniem na BMP zrób zresztą test na innym obrazku zrobionym choćby w Paincie.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.