热情软件屋

 

为什么LoadBitmap不能装载任意32*32*16色的BMP文件


编号: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回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio