Войти

Показать полную графическую версию : [решено] Проблема с LoadBitmap - не грузит картинку


crashtuak
09-01-2010, 07:28
Вот код:
BOOL InitTreeViewImageLists(HWND hwndTV)
{
HIMAGELIST himl; // handle to image list
HBITMAP hbmp; // handle to bitmap

// Create the image list.
if ((himl = ImageList_Create(14,
14,
FALSE,
3, 0)) == NULL)
return FALSE;

// Add the open file, closed file, and document bitmaps.
hbmp = LoadBitmap(NULL, MAKEINTRESOURCE(IDB_BITMAP2));
g_nOpen = ImageList_Add(himl, hbmp, (HBITMAP)NULL);
DeleteObject(hbmp);

hbmp = LoadBitmap(NULL, MAKEINTRESOURCE(IDB_BITMAP2));
g_nClosed = ImageList_Add(himl, hbmp, (HBITMAP)NULL);
DeleteObject(hbmp);

hbmp = LoadBitmap(NULL, MAKEINTRESOURCE(IDB_BITMAP2));
g_nDocument = ImageList_Add(himl, hbmp, (HBITMAP)NULL);
DeleteObject(hbmp);

// Fail if not all of the images were added.
if (ImageList_GetImageCount(himl) < 3)
return FALSE;

// Associate the image list with the tree-view control.
TreeView_SetImageList(hwndTV, himl, TVSIL_NORMAL);

return TRUE;
}

Во всех случаях hbmp равен 0x00000000, тоесть LoadBitmap не отработал. В чем проблема?

pva
09-01-2010, 12:04
An application can use the LoadBitmap function to access predefined bitmaps. To do so, the application must set the hInstance parameter to NULL and the lpBitmapName parameter to one of the following values.
ИМХО GetModuleHandle надо сделать

Admiral
09-01-2010, 17:21
crashtuak, он не знает откуда брать картинку, IDB_BITMAP2 не определён (по крайне мере в приведённой части кода). В примере в MSDN, где схожий код, сказано
// IDB_OPEN_FILE, IDB_CLOSED_FILE, IDB_DOCUMENT -
// resource identifiers of the bitmaps. >> (http://msdn.microsoft.com/en-us/library/bb773409(VS.85).aspx)

crashtuak
09-01-2010, 17:42
У меня IDB_BITMAP2 в ресурсах есть. Прийду домой, опишу всё подробно.

crashtuak
10-01-2010, 15:38
Блин, либо я тупой, либо у меня комп глюкнутый. С ресурсов подгрузить картинку так и не получилось. Зато вышло вот так, из файла(мне так в принципе и удобнее):
hbmp = (HBITMAP)LoadImage(NULL, L"E:\\IDB_BITMAP1.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
И что странно, раньше и так не работало, а сегодня вдруг все заработало... Мистика... Буду морочиться с ресурсами, почему то же не грузит. Может подскажите что нибудь, где описана работа с ресурсами?

Admiral
10-01-2010, 17:28
crashtuak, Как засунуть файл в ресурсы и достать его оттуда (http://sources.ru/cpp/faqs/75.htm)

pva
11-01-2010, 08:44
crashtuak, а

hbmp = LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_BITMAP2));

так и не заработал?

crashtuak
11-01-2010, 11:05
pva, небыло времени, но должно заработать, я MSDN внимательнее прочитал:-).

crashtuak
13-01-2010, 13:11
pva, заработало, я просто GetModuleHandle(NULL) не использовал, и в том то была проблема, как ты и говорил:)




© OSzone.net 2001-2012