Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[WinAPI, C++] ListView - dodawanie ikon do wierszy

Ostatnio zmodyfikowano 2011-08-04 18:41
Autor Wiadomość
xevuel
Temat założony przez niniejszego użytkownika
[WinAPI, C++] ListView - dodawanie ikon do wierszy
» 2011-08-02 11:37:14
Chciałbym do kontrolki ListBox dodać obraz, a koło tego tekst. Tworzę program, który w formie graficznej wyświetli (właśnie w ListBoxie) zawartość katalogu, w którym został uruchomiony. W google szukałem, ale co znajdę, to albo Delphi, albo Pascal. Wie ktoś jak to zrobić?
P-37905
malan
» 2011-08-02 11:56:59
ListView_SetImageList (msdn) - dalej już powinieneś sobie poradzić sam.
P-37907
Mrowqa
» 2011-08-02 13:35:02
W google szukałem, ale co znajdę, to albo Delphi, albo Pascal.
WinAPI to WinAPI... masz tam nazwę funkcji i takie tam. Inny język - inna składnia, ale działanie nie. Ja znalazłem dużo info na temat ListBoksa w Delphi kiedyś i potrafiłem to wykorzystać :)
P-37919
xevuel
Temat założony przez niniejszego użytkownika
ListView_SetImageList
» 2011-08-02 15:23:13
malan - 2 parametrem tej funkcji (ListView_SetImageList) jest argument o typie HIMAGELIST. Sprawdzałem w googlach jak można go uzyskać, i znalazłem coś takiego:

http://msdn.microsoft.com/en-us/library/bb761522(v=vs.85).aspx

(Nie umieściłem tego linka jako hiperłącze, bo nie wiem jak - nigdzie nie ma żadnych podpowiedzi)
Jednak wydaje mi się, że czegoś nie rozumiem. Otóż wszystkimi argumentami funkcji ImageList_Create są wartości int! Więc gdzie ja mam podać ścieżkę do obrazu??
P-37931
Mrowqa
» 2011-08-02 15:28:18
P-37932
malan
» 2011-08-02 16:00:37
Tak, ale masz funkcję: ImageList_Add Function (msdn) :)
P-37934
xevuel
Temat założony przez niniejszego użytkownika
» 2011-08-03 10:40:23
dzięki, właśnie tej funkcji nie znałem.

//EDIT:
Mam taki kod:
C/C++
HWND h_list;
h_list = CreateWindowEx( WS_EX_CLIENTEDGE, "ListBox", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER,
5, 5, 150, 200, hwnd, NULL, hThisInstance, NULL );

HIMAGELIST himlDef;
himlDef = ImageList_Create( 16, 16, ILC_COLOR24 | ILC_MASK, 0, 1 );

HBITMAP ikona;
ikona =( HBITMAP ) LoadImage( NULL, "ikona.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE );

ImageList_AddMasked( himlDef, ikona, RGB( 255, 255, 255 ) );

ListView_SetImageList( h_list, himlDef, LVSIL_NORMAL );

ImageList_Destroy( himlDef );
DeleteObject( ikona );

i zarówno Dev, jaki Code::Blocks wyświetlają mi błedy:
  [Linker error] undefined reference to `ImageList_Create@20'
[Linker error] undefined reference to `ImageList_AddMasked@12'
[Linker error] undefined reference to `ImageList_Destroy@4'

Pododbno Dev ma "skopany" nagłowek commctrl.h, ale dlaczego Code::Blocks?
I co muszę zmienić?
P-37997
SeaMonster131
» 2011-08-03 13:05:12
Musisz chyba dołączyć do linkera:
-lcomctl32

Albo samemu dodać plik o mniej więcej takiej nazwie (np libcomctl32) :)
P-38024
« 1 » 2 3 4
  Strona 1 z 4 Następna strona