首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >带CImageList访问的CListCtrl用于修改HBITMAP

带CImageList访问的CListCtrl用于修改HBITMAP
EN

Stack Overflow用户
提问于 2014-06-20 01:26:26
回答 1查看 616关注 0票数 0

我有一个包含CImageList的CListCtrl,这样我就可以在我的列表中显示HBITMAP(纯彩色矩形)。我希望能够替换一种颜色。举个例子,如果我在列表中选择了一些颜色,然后点击替换,颜色就会改变。我使用以下代码:

代码语言:javascript
运行
复制
   int nItem = 0;
   list<CustomColor>::iterator listCopyIter = pListCopy->begin();
   while( nItem<pListCtrl->GetItemCount() && listCopyIter!=pListCopy->end() )
   {
      if (pListCtrl->GetItemState(nItem, LVIS_SELECTED) == LVIS_SELECTED)
      {
         HBITMAP hBitmap = CreateBitmap(); //Just some function I use

         //IMAGEINFO* pItmData = (IMAGEINFO*)pListCtrl->GetItemData(nItem);
         //pItmData->hbmImage = hBitmap;
         //pListCtrl->SetItemData(nItem, (DWORD_PTR)pItmData);
         pImageList->Replace(nItem, CBitmap::FromHandle(hBitmap), RGB(0,0,0));
         *listCopyIter = color;
         return;
      }
      else
      {
         nItem++;
         listCopyIter++;
      }
   }

其中pListCopy是my std::list< CustomColor >*,pListCtrl my CListCtrl*和pImageList my ImageList*。

问题是,有时我的CListCtrl与ImageList使用的位置不同(例如,CListCtrl pos 3中的项目可以使用ImageList pos 6中的图像)。在这种情况下,替换的HBITMAP是错误的。这就是我在注释中尝试代码的原因:尝试获取ItemData,将其转换为IMAGEINFO,更改HBITMAP的值,然后将其重新设置。但这给了我一个写访问冲突...

我忽略了什么?有没有办法直接更改HBITMAP?我知道我总是可以从ImageList获取每个HBITMAP值,并重新定位它们,使它们与CListCtrl同步,但这不是很有效,也不是很难看。

EN

回答 1

Stack Overflow用户

发布于 2014-06-20 03:00:23

问题是我用错了GetItemData。GetItemData返回DWORD_PTR (32位值)。而且我以前从来没有用过SetItemData。现在,在创建项目时,我使用以下代码:

代码语言:javascript
运行
复制
int nItemPos = pListCtrl->InsertItem(pos, string, imgpos);
pListCtrl->SetItemData(nItemPos, imgpos);

然后在我的另一个函数中,我只是将GetItemData转换为int,以便检索图像位置,如下所示:

代码语言:javascript
运行
复制
int pItmPos = (int)pListCtrl->GetItemData(nItem);
pImageList->Replace(pItmPos, CBitmap::FromHandle(hBitmap), RGB(0,0,0));
pListCtrl->RedrawItems(nItem, nItem);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24312761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档