首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

MFC CListView 加載小圖標失敗排查

     編輯:程式設計疑難解答

現象

CImageList 創建後調用 LoadBitmap 與 SetImageList,運行時圖標顯示空白,調試發現 ImageList 與 Bitmap 均未成功加載。

常見原因

  1. 資源 ID 錯誤:IDB_BITMAP11 未定義或與 .rc 文件不符。
  2. 位圖格式不匹配:ILC_COLOR24 需 24 位真彩色位圖,若資源為 8 位/4 位會加載失敗。建議用 ILC_COLOR32 或確保位圖為 24 位。
  3. ImageList 尺寸與位圖不符:Create(32,32,...) 要求位圖寬高為 32 的倍數(單行多圖標),單個 32x32 位圖寬度應為 32。
  4. 未將 Bitmap 加入 ImageList:缺少 m_Imagelist.Add(&bitmap, RGB(255,0,255))(指定透明色)。

修正代碼

m_Imagelist.Create(32, 32, ILC_COLOR32 | ILC_MASK, 1, 1);
CBitmap bitmap;
bitmap.LoadBitmap(IDB_BITMAP11); // 確保資源為 32x32 24/32 位
m_Imagelist.Add(&bitmap, RGB(255,0,255)); // 添加並設置透明色
pTheList->SetImageList(&m_Imagelist, LVSIL_SMALL);

調試技巧

檢查 m_Imagelist.GetImageCount() 是否 > 0,若為 0 則加載失敗,逐步排查上述條件。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved