Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] Проблема с LoadBitmap - не грузит картинку (http://forum.oszone.net/showthread.php?t=162864)

crashtuak 09-01-2010 07:28 1314975

Проблема с LoadBitmap - не грузит картинку
 
Вот код:
Код:

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 1315050

Цитата:

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 1315371

crashtuak, он не знает откуда брать картинку, IDB_BITMAP2 не определён (по крайне мере в приведённой части кода). В примере в MSDN, где схожий код, сказано
Цитата:

Цитата Using Tree-View Controls -> Initializing the Image List
// IDB_OPEN_FILE, IDB_CLOSED_FILE, IDB_DOCUMENT -
// resource identifiers of the bitmaps. >>


crashtuak 09-01-2010 17:42 1315404

У меня IDB_BITMAP2 в ресурсах есть. Прийду домой, опишу всё подробно.

crashtuak 10-01-2010 15:38 1316293

Блин, либо я тупой, либо у меня комп глюкнутый. С ресурсов подгрузить картинку так и не получилось. Зато вышло вот так, из файла(мне так в принципе и удобнее):
Код:

hbmp = (HBITMAP)LoadImage(NULL, L"E:\\IDB_BITMAP1.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
И что странно, раньше и так не работало, а сегодня вдруг все заработало... Мистика... Буду морочиться с ресурсами, почему то же не грузит. Может подскажите что нибудь, где описана работа с ресурсами?

Admiral 10-01-2010 17:28 1316407

crashtuak, Как засунуть файл в ресурсы и достать его оттуда

pva 11-01-2010 08:44 1316943

crashtuak, а
Код:

hbmp = LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_BITMAP2));
так и не заработал?

crashtuak 11-01-2010 11:05 1317014

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

crashtuak 13-01-2010 13:11 1319089

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


Время: 02:44.

Время: 02:44.
© OSzone.net 2001-