ListView i ikona

Witam! Dziś zainteresowała mnie kontrolka ListView, ale nie potrafię dodać do niej ikonki. Niby wszystko dobrze, ale ikona się nie pojawia.

#define _WIN32_IE 0x0600

#include 

#include 


#define IDB_FOLDER 3001



using namespace std;


HWND hWnd, hListView;

CHAR szClassName[]="OknoRodzica";

HINSTANCE* hInst;

int SizeX = 600, SizeY = 300; RECT rcDesk;


LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);


INT WINAPI WinMain(HINSTANCE hInstance,HINSTANCE,LPSTR lStart,INT nShow)

{

  hInst=&hInstance;

  GetWindowRect(GetDesktopWindow(), &rcDesk);

  WNDCLASSEX wc;

  wc.hInstance=*hInst;

  wc.lpszClassName=szClassName;

  wc.lpfnWndProc=WndProc;

  wc.style=0;

  wc.cbSize=sizeof(WNDCLASSEX);

  wc.hIcon=LoadIcon(0,0);

  wc.hIconSm=LoadIcon(0,0);

  wc.hCursor=LoadCursor(0,IDC_ARROW);

  wc.lpszMenuName=0;

  wc.cbClsExtra=0;

  wc.cbWndExtra=0;

  wc.hbrBackground=(HBRUSH)5;

  if(!RegisterClassEx(&wc))

  return 0;


  hWnd=CreateWindowEx(WS_EX_DLGMODALFRAME,szClassName,"Lista plików",WS_SYSMENU | WS_MINIMIZEBOX,(rcDesk.right - SizeX) / 2,(rcDesk.bottom - SizeY) / 2,SizeX,SizeY,0,0,*hInst,0);

  ShowWindow(hWnd,nShow);

  INITCOMMONCONTROLSEX icc;icc.dwSize = sizeof(INITCOMMONCONTROLSEX);icc.dwICC = ICC_BAR_CLASSES;InitCommonControlsEx(&icc);

  MSG msgs;

  while(GetMessage(&msgs,0,0,0))

  {

    TranslateMessage(&msgs);

    DispatchMessage(&msgs);

  }

  return msgs.wParam;

}


LRESULT CALLBACK WndProc(HWND hwnd,UINT msg,WPARAM wPar,LPARAM lPar)

{

  switch(msg)

  {

    case WM_CREATE:

    {

        // Tworzenie kontrolki.

        RECT rcl;GetClientRect (hwnd, &rcl);

        hListView = CreateWindowEx (0, WC_LISTVIEW, NULL, WS_CHILD | WS_VISIBLE | LVS_REPORT | LVS_EDITLABELS, 0, 0, rcl.right - rcl.left, rcl.bottom - rcl.top, hwnd, (HMENU)1000, *hInst, NULL);


        // Etykiety.

        LVCOLUMN lvc;

        lvc.mask = LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;

        lvc.iSubItem = 0;

        lvc.cx = 200;

        lvc.pszText = "Nazwa pliku/folderu";

        ListView_InsertColumn (hListView, 0, &lvc);


        // Wczytywanie ikonek *.bmp.

        HIMAGELIST himl;HBITMAP hbmp;

        himl = ImageList_Create (16, 16, ILC_COLOR32, 1, 0);

        hbmp = LoadBitmap (*hInst, MAKEINTRESOURCE(IDB_FOLDER));

        ImageList_Add (himl, hbmp, (HBITMAP)NULL);

        DeleteObject (hbmp);

        ListView_SetImageList(hListView, himl, LVSIL_SMALL);


        // Pliki/Foldery.

        LVITEM lvi;

        lvi.mask = LVIF_TEXT | LVIF_IMAGE;

        lvi.pszText = "Nowy Folder";

        lvi.iItem = 0;

        lvi.iSubItem = 0;

        lvi.iImage = 0;

        ListView_InsertItem (hListView, &lvi);

    }

    break;

    case WM_COMMAND:

    {

         switch(wPar)

         {


         }

    }

    break;

    case WM_DESTROY:

    {

         PostQuitMessage(0);

    }

    break;

    default:

      return DefWindowProc(hwnd,msg,wPar,lPar);

  }

  return 0;}

Oto plik rc

1 24 "lista_plikow.exe.Manifest"


IDB_FOLDER BITMAP "folder.bmp"

Ikonka ma rozmiary 16x16 folder.bmp Proszę o pomoc w rozwiązaniu problemu.

Prawdopodobnie większe zainteresowanie tematem byłoby, gdybyś podał o jaki język programowania Ci chodzi.

Język ten to WinAPI ubolewam nad tym problemem już od 3 dni. “Rozwalam” i piszę od nowa i znów się nie pojawia. Proszę o pomoc. Problem na pewno jest nie wielki, coś przeoczyłem, albo o czymś zapomniałem.

Dodane 26.03.2010 (Pt) 8:56

Przepraszam, że piszę post pod postem, ale właśnie udało mi się pokazać ikonkę, zamiast pliku *.bmp wczytałem *.ico, nawet lepiej bo bd mógł wykorzystać 100% przeźroczystość ikony. Przy wczytywaniu ikonki *.bmp musiałem popełnić jakiś błąd, sam nie wiem gdzie.