Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > ListView - помещение в него Image


Автор: ZC1989 2.4.2010, 12:28
Редят, завис над таким вопросом...:

нужно в ListView помещать картинки, картинки хранятся на сервере, но для работы в программе я планирую сливать их на компьютер, только что бы не ждать загрузки всего списка хотелось бы поочерёдно, после загрузкт каждого изображения добавлять его в список.

подгружаю картинки
Код

Image img(L"image.gif");


а вот как добавить этот img в Item?

Код

LV_ITEM lvi;
memset(&lvi, 0, sizeof(lvi));

lvi.mask = LVIF_IMAGE | LVIF_TEXT | LVIF_STATE;
lvi.pszText = "Название картинки";
lvi.cchTextMax = 1024;
lvi.iImage = 0;
lvi.iItem = 0;
lvi.iSubItem = 0;
lvi.iGroupId = 0;

SendMessage(hSelImgList, LVM_INSERTITEM, 0, (LPARAM)&lvi);


загвозка собственно в том как передать Item'у идентификатор картинки?

пс: на форуме искал и в нете то же, но толком ничего не нашёл что сработало бы.

где то читал что в lvi.lParam нужно передать саму картинку, только как тогда её вычленить из Image?


удалите подобный топик в общих вопросах

Автор: ZC1989 2.4.2010, 13:39
блин...а оказалось всё гораздо проще... надо было всего лишь грузить через структуру Bitmap


Код

void test_paint(){
    HBITMAP hbmp;
    HBITMAP hbmp2;
    Bitmap bmp1(L"Picture 1.jpg");
    Bitmap bmp2(L"01.jpg");

    HIMAGELIST himlLarge = ImageList_Create(100, 100, ILC_COLOR32, 3, 1);
    bmp1.GetHBITMAP(0, &hbmp);
    ImageList_Add(himlLarge, hbmp, 0);

    bmp2.GetHBITMAP(0, &hbmp2);
    ImageList_Add(himlLarge, hbmp2, 0);

    ListView_SetImageList(hSelImgList, himlLarge, LVSIL_NORMAL);



    LV_ITEM lvi;
    memset(&lvi, 0, sizeof(lvi));

    lvi.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_STATE;
    lvi.pszText = "title 1";
    lvi.cchTextMax = 1024;
    lvi.iImage = 0;
    lvi.iItem = 0;
    lvi.iSubItem = 0;
    lvi.iGroupId = 0;
    SendMessage(hSelImgList, LVM_INSERTITEM, 0, (LPARAM)&lvi);

    lvi.iImage = 1;
    lvi.iItem = 1;
    lvi.pszText = "title 2";

    SendMessage(hSelImgList, LVM_INSERTITEM, 1, (LPARAM)&lvi);
}



Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)