1 // TODO: 在此添加额外的初始化代码
2 m_list.SetExtendedStyle(
3 LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT | LVS_EX_SUBITEMIMAGES); //特别注意最后一个属性。
4 m_list.InsertColumn(0, TEXT("文件名"), 0, 200);
5 m_list2.InsertColumn(0, TEXT("文件名"), 0, 200);
6 static HIMAGELIST nHiml = { 0 };//图标列表
7 static SHFILEINFO nPsfi = { 0 };//文件信息
8 static BOOL nOn = FALSE;
9 if (!nOn)
10 {
11 nOn = !nOn;
12 nHiml = ImageList_Create(32, 32, ILC_COLOR32, 0, 0);//订制图标框架
13 ImageList_SetBkColor(nHiml, m_list.GetBkColor());//设置图标列表底色
14 m_list.SendMessage(LVM_SETIMAGELIST, 1, (LPARAM)nHiml);//设置超级列表显示图标
15 }
16
17 //int nListNum = m_list.GetItemCount();
18
19 ImageList_SetImageCount(nHiml, 2);
20
21
22
23 // SHFILEINFO nPsfi = { 0 };//文件信息
24 CString a = "D:\\code\\cpp\\ConsoleApplication1\\ConsoleApplication3\\python.exe";
25
26 DWORD nFileAttributes = SHGFI_SYSICONINDEX | SHGFI_SMALLICON;//获取文件信息
27 SHGetFileInfo(a.GetBuffer(), nFileAttributes, &nPsfi, sizeof(SHFILEINFO), SHGFI_ICON);
28
29 /*HICON hIcon = LoadIcon(NULL, IDI_APPLICATION);
30 HBITMAP a1=ConvertIconToBitmap(nPsfi.hIcon);
31 HICON b=CreateIcon1(a1);*/
32 //SaveIconAsBitmap(b, TEXT("1.bmp"));
33
34
35 //ImageList_ReplaceIcon(nHiml, 0, nPsfi.hIcon);
36 //DestroyIcon(nPsfi.hIcon);
37 //m_list.InsertItem(0,"3333");
38 // m_list.SetItem(0, 0, 2, TEXT(""), 0, 0, 0, 0, SRCCOPY);
39
40 /*HDC hDcMem = CreateCompatibleDC(0);
41 HBITMAP hBmpMem = ::CreateCompatibleBitmap(0, 32, 32);
42 ::SelectObject(hDcMem, hBmpMem);
43 CPaintDC dc(this);
44 CBitmap bitmap;
45 dc.DrawIcon(0, 0, nPsfi.hIcon);
46 dc.SelectObject(bitmap);
47 char* buff = new char[0x10000] {};
48 bitmap.GetBitmapBits(0x10000, buff);*/
49
50 HDC hdc = ::GetDC(nullptr);
51
52 // 将图标绘制到内存中
53 ICONINFO iconInfo;
54 ::GetIconInfo(nPsfi.hIcon, &iconInfo);
55
56 BITMAP bitmap;
57 GetObject(iconInfo.hbmColor, sizeof(BITMAP), &bitmap);
58
59 HDC memDC = CreateCompatibleDC(hdc);
60 HBITMAP hBitmap = CreateCompatibleBitmap(hdc, bitmap.bmWidth, bitmap.bmHeight);
61 HBITMAP hBitmapOld = (HBITMAP)SelectObject(memDC, hBitmap);
62
63 DrawIconEx(memDC, 0, 0, nPsfi.hIcon, bitmap.bmWidth, bitmap.bmHeight, 0, nullptr, DI_NORMAL);
64
65 BITMAP bitmap1;
66 GetObject(iconInfo.hbmMask, sizeof(BITMAP), &bitmap1);
67
68 HDC memDC1 = CreateCompatibleDC(hdc);
69 HBITMAP hBitmap1 = CreateCompatibleBitmap(hdc, bitmap1.bmWidth, bitmap1.bmHeight);
70 HBITMAP hBitmapOld1 = (HBITMAP)SelectObject(memDC, hBitmap1);
71
72 DrawIconEx(memDC1, 0, 0, nPsfi.hIcon, bitmap1.bmWidth, bitmap1.bmHeight, 0, nullptr, DI_NORMAL);
73 // dcMem.DrawIcon(0, 0, nPsfi.hIcon);
74 //dcMem.DrawIcon(0, 0, (HICON)nPsfi.iIcon);
75 //dcMem.BitBlt(0, 0, 32, 32,dc, 0, 0, SRCCOPY);
76
77 // uint32_t nDataLen = 32 * 32 * 4;
78 // uint8_t* pScrData = new uint8_t[nDataLen]{};
79 //::GetBitmapBits(hBitmap,nDataLen, pScrData);
80
81 //m_list.InsertItem(0, "3333");
82 //m_list.SetItem(0, 0, 2, TEXT(""), 0, 0, 0, 0, SRCCOPY);
83
84 //HBITMAP hBitmap1 = CreateCompatibleBitmap(hdc, bitmap.bmWidth, bitmap.bmHeight);
85 //SetBitmapBits(hBitmap1,nDataLen, pScrData);
86 //m_list.SetBkImage(bmpMem1.GetSafeHandle());
87 //m_list.SetBkImage(, 0, 0, 0);
88 CImage imgTemp;
89 // // CImage是MFC中的类。
90 // imgTemp.Attach(hBitmap);
91 //imgTemp.Save("1.png");
92
93 imgTemp.Attach(hBitmap1);
94 imgTemp.Save("2.bmp");
95 imgTemp.Detach();
96 imgTemp.Attach(hBitmap);
97 imgTemp.Save("3.bmp");
98 //HANDLE hBitMap = ::LoadBitmap(0, IDB_BITMAP1);
99 //CBitmap bitmap11;
100 CBitmap bitmap11{};
101 //AFX_MANAGE_STATE(AfxGetStaticModuleState());
102 //bitmap11.LoadBitmap("MFCAppTest.ico");
103 bitmap11.Attach(hBitmap);
104 //bitmap11.LoadBitmapA();
105 //CBitmap cbitmap;
106 //cbitmap.Attach(hBitmap1);
107 //cbitmap.SetBitmapBits(nDataLen, pScrData);
108 //cbitmap.LoadBitmapA(hBitmap1->unused,0);
109
110 //CImageList cimagelist;
111 //cimagelist.Add(hBitmap);
112
113 CBitmap bitmap112{};
114 bitmap112.Attach(hBitmap1);
115
116 /*imgTemp.e
117 imgTemp.excludeIcon;*/
118
119 CImageList image_list;
120
121 image_list.Create(32, 32, ILC_COLOR32, 0, 0);
122 // image_list.SetBkColor(m_list.GetBkColor());
123 //m_list.SetImageList(&image_list, LVSIL_SMALL);
124 image_list.Add(nPsfi.hIcon/*&bitmap11, &bitmap112*/);
125 ImageList_ReplaceIcon(nHiml, 0, ConvertHBitmapToHIcon(hBitmap, hBitmap1));
126 DestroyIcon(nPsfi.hIcon);
127 //m_list.SetImageList(&image_list, LVSIL_SMALL);
128 //image_list.
129
130 // ImageList_Add(nHiml, hBitmap1,0);
131
132
133 //m_list.InsertColumn(0, &column);
134 // m_list.InsertColumn(1, _T("Text"), LVCFMT_LEFT, 100);
135 int index = m_list.InsertItem(0, _T("111"), 0);
136 //m_list.SetItemText(0, 0, _T("My text"));
137 //m_list.SetItem(0, 0, 2, TEXT(""),0, 0, 0, 0);
138 //LVITEM Itemattr;
139 //Itemattr.iItem = 0; //指定哪一行
140 //Itemattr.mask = LVIF_IMAGE;
141 //Itemattr.iImage = 1; //要把当前图标改成m_Imagelist 中下标为 4 的图标。
142 //m_list.SetItem(&Itemattr); //更改成功。
1 #include <Gdiplus.h>
2 #pragma comment(lib,"Gdiplus.lib")
3 using namespace std;
4 using namespace Gdiplus;
5 HICON ConvertHBitmapToHIcon(HBITMAP hBitmap, HBITMAP hBitmap1)
6 {
7 ICONINFO iconInfo = { 0 };
8 iconInfo.fIcon = TRUE;
9 iconInfo.hbmMask = hBitmap1;
10 iconInfo.hbmColor = hBitmap;
11
12 return CreateIconIndirect(&iconInfo);
13 }