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.