qq_28254507
ProgJ
2016-02-20 15:13
采纳率: 88.1%
浏览 1.8k

MFC CListView 加载小图标的问题

m_editFont.CreatePointFont(160, "宋体");
    SetFont(&m_editFont);

    CImageList m_Imagelist;
    CBitmap bitmap;
    m_Imagelist.Create(32, 32, ILC_COLOR24, 2, 1);
    bitmap.LoadBitmap(IDB_BITMAP11);

    CRect rect;
    GetClientRect(&rect);

    ptheList = &GetListCtrl();
    ptheList->ModifyStyle(0, LVS_REPORT | LVS_SHOWSELALWAYS | LVS_SORTASCENDING);
    ptheList->SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 0, LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT | LVS_EX_SUBITEMIMAGES);

    ptheList->SetImageList(&m_Imagelist, LVSIL_SMALL);

    ptheList->InsertColumn(0, "默认笔记", LVCFMT_LEFT, rect.Width(), 0);

    int pos;
    pos = ptheList->InsertItem(1, "123", 0);
    pos = ptheList->InsertItem(2, "321", 0);
}

这样运行出来的图标是空白的。。调试发现 m_Imagelist 和 bitmap 都没有成功把位图加载进去。。为什么。。是哪里错了?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • oyljerry
    oyljerry 2016-02-21 00:20
    已采纳

    imagelist是否加载bitmap成功了没,图片资源需要能符合格式

    点赞 评论
  • caozhy

    这个要看你的资源了,ILC_COLOR24怎么写的,大小、颜色深度是不是和m_Imagelist所要求的一致。

    点赞 评论
  • qq_28254507
    ProgJ 2016-02-21 07:26

    知道问题在哪了。。应该是ImageList没有Add的原因。。
    以下把成功代码贴出来:

      CImageList *m_Imagelist;
        m_Imagelist = new CImageList();
        m_Imagelist->Create(32, 31, ILC_COLOR24, 0, 4);
        CBitmap bitmap;
        bitmap.LoadBitmap(IDB_BITMAP11);
        m_Imagelist->Add(&bitmap, RGB(0, 0, 0));
        bitmap.DeleteObject();
    
        ptheList->SetImageList(m_Imagelist, LVSIL_SMALL);
    
        ptheList->InsertColumn(0, "默认笔记", LVCFMT_LEFT, rect.Width(), 0);
        ptheList->InsertItem(0, "默认笔记", 0);
    

    不过调试到m_Imagelist->Add(&bitmap, RGB(0, 0, 0)); 时发现 m_ImageList和bitmap其实一直都显示<无可用信息....>
    就好像图片资源没加载进去一样。。但是显示是正常的了。。这里我也不大清楚这个所谓的无可用信息是什么意思。。各位能否解释一下。。
    图片说明

    点赞 评论
  • VisualEleven
    Eleven 2016-02-22 07:33

    Rebuild一下再看看呢?

    点赞 评论

相关推荐