【问题标题】:Bitmap images not showing in CListCtrl report view位图图像未显示在 CListCtrl 报告视图中
【发布时间】:2012-09-14 13:19:33
【问题描述】:

我正在尝试在 MFC 中创建一个包含 CListCtrl 的对话框,以显示带有关联图像的项目列表。但是,图像显示为空白的白色方块。他们在那里,或者至少,他们应该在的地方有一个空间。

我正在尝试从文件加载位图(尽管我也尝试从具有相同效果的资源 ID 加载)并将其存储在 CImageList 中。然后将该图像列表提供给 CListCtrl。我相当确定该位图已正确加载,因为我已使用相同的代码成功地在项目的其他地方成功加载了相同的位图。

我不确定这是否重要,但这是上下文菜单外壳扩展的一部分,当用户单击资源管理器上下文菜单中的一项时会引发对话框。另外,我对 MFC 比较陌生,所以如果我错过了一些非常明显的东西,我深表歉意。

以下是我在报告视图中初始化 CListCtrl 的代码,其中包含两列和一个项目,第一列应包含图像,第二列应包含一些文本:

// Get reference to list control
CListCtrl m_list_control = (CListCtrl*)GetDlgItem(IDC_LISTCONTROL);

// Create image list
CImageList image_list;
image_list.Create(32, 32, ILC_COLOR4, 0, 3);

HANDLE hBitMap = ::LoadImage(0, L"E:\pathtomybitmap\bitmap1.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); 
CBitmap bitmap; 
bitmap.Attach((HBITMAP)hBitMap); 

image_list.Add(&bitmap, RGB(255, 0, 255));

// Add the image list to the list control 
// (LVSIL_NORMAL didn't seem to show anything at all)
m_list_control->SetImageList(&image_list, LVSIL_SMALL);


// Add columns
LVCOLUMN column;
column.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_IMAGE;
column.fmt = LVCFMT_LEFT | LVCFMT_IMAGE;
column.cx = 100;
column.pszText = (LPWSTR)&L"Image";
column.iImage = 0;

m_list_control->InsertColumn(0, &column);

m_list_control->InsertColumn(1, _T("Text"), LVCFMT_LEFT, 100);


int index = m_list_control->InsertItem(0, _T(""), 0);
m_list_control->SetItemText(0, 1, _T("My text"));

知道我做错了什么吗?

【问题讨论】:

  • 从你发布的代码中看不出来,但是变量 image_list 的范围是什么?
  • 对不起,我在这里添加了声明,但是 image_list 和 m_list_control 是扩展 CDialog 类的成员变量
  • 您的位图是 4 位的吗? (16 种颜色)。试试 ILC_COLOR32
  • 是的,我很确定它是 4 位的。无论如何我尝试了其他选项,但无济于事
  • 在第四个参数image_list.Create(32, 32, ILC_COLOR4, 0, 3); 中尝试传递元素的实数而不是零。

标签: c++ mfc bitmap shell-extensions clistctrl


【解决方案1】:

尝试更改创建语句,使您放置的尺寸小于图像尺寸

image_list.Create(31, 31, ILC_COLOR4, 0, 3);

尝试将插入项的掩码参数设置为:

InsertItem(LVIF_TEXT | LVIF_IMAGE,...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多