编号:QA003588
建立日期: 2000年11月27日 最后修改日期:2000年11月27日
所属类别:
王强:
操作系统: WinX
编程工具: VC++6
问题:
CImageList *image;
CBitMap *bmp;
image=new CImageList();
bmp=new CBitmap();
image->Create(32,32,ILC_COLOR4,0,1);
bmp->LoadBitmap(".//Face//18-1.bmp");
image->Add(bmp,color);
bmp->LoadBitmap(".//Face//18-2.bmp");
image->Add(bmp,color);
bmp->LoadBitmap(".//Face//18-3.bmp");
image->Add(bmp,color);
m_ListCtrl.SetImageList(image, LVSIL_SMALL);
m_ListCtrl.InsertItem(0,CString("Face1"),0);
m_ListCtrl.SetItemText(0,1,CString("Record1_f2"));
m_ListCtrl.InsertItem(1,CString("Face2"),1);
m_ListCtrl.SetItemText(1,1,CString("Record2_f2"));
m_ListCtrl.InsertItem(1,CString("Face3"),2);
m_ListCtrl.SetItemText(1,1,CString("Record3_f2"));
通过以上代码装载任意32*32*16色的BMP文件,在LISTCTRL中却不能把图形显示出来。请指教。
水平: 刚入门
回答:
CBitmap::LoadBitmap()不能以文件形式打开,原因不知道,虽然提供了LPCTSTR lpszResourceName(主持人注:这个参数是DLL或EXE中的资源名,不是文件名),我给出了另外的方法,也是常用的。请看下面的代码:
CBitmap bmp[3];
image=new CImageList();
image->Create(32,32,TRUE,1,1);
HBITMAP hbmp;//位图句柄
hbmp= (HBITMAP)::LoadImage( AfxGetInstanceHandle(),
"bitmap1.bmp",IMAGE_BITMAP,0,0,
LR_LOADFROMFILE);//从文件bitmap1.bmp打开位图资源
bmp[0].Attach(hbmp);//绑定
image->Add(&bmp,color);
hbmp= (HBITMAP)::LoadImage( AfxGetInstanceHandle(),
"bitmap2.bmp",IMAGE_BITMAP,0,0,
LR_LOADFROMFILE);
bmp[1].Attach(hbmp);
image->Add(&bmp2,color);
hbmp= (HBITMAP)::LoadImage( AfxGetInstanceHandle(),
"bitmap3.bmp",IMAGE_BITMAP,0,0,
LR_LOADFROMFILE);
bmp[2].Attach(hbmp);
image->Add(&bmp3,color);
m_list.SetImageList(image, LVSIL_NORMAL);
此问题由bluenet回答。