hbitmap się nie wczytuje

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.

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

0

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

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

0

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

0

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

0

Pokaż kod.

0
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;
} 
0

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

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).

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ć :(

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.

DWORD err = GetLastError();
cout << err << endl;
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.

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

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

0

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

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

0
Niikelion napisał(a):
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.

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