ListControl控件的一点问题

大树学长 2019-06-13 09:59:10
lcon风格下插入位图,按钮中添加响应函数,每单击一次就插入一张图片

void CMooerStudioDlg::OnBnClickedButton11()
{
CBitmap *pBitmap = new CBitmap;

HBITMAP hBitmap = (HBITMAP)LoadImage(AfxGetInstanceHandle(), CS_Ico, IMAGE_BITMAP, 107, 107, LR_LOADFROMFILE);//CS_Ico是路径,从路径导入图片
pBitmap->Attach(hBitmap);

int index = m_ImageList.Add(pBitmap, RGB(0, 0, 0));

if (m_ImageList.GetImageCount() == 0)
{
CString strMsg;
strMsg.Format(L"导入图片失败!%d", GetLastError());
AfxMessageBox(strMsg);
}

m_ListCtrl.SetImageList(&m_ImageList, LVSIL_NORMAL);

CString add;
add.Format(Name[Count] + TEXT("%d"), index);

m_ListCtrl.InsertItem(index, add, index);
}


获取单击行号的代码,OnClickList1中

CString str;
for (int i = 0; i< m_ListCtrl.GetItemCount(); i++)
{
if (m_ListCtrl.GetItemState(i, LVIS_SELECTED) == LVIS_SELECTED)
{
str.Format(_T(" 选中了第%d 行"), i);
AfxMessageBox(str);
}
}


问题是当我多次单击按钮插入几张图片后,获取当前选中的行号是反着的,单击0这个图标显示在第2行,点击1这个图标显示在第1行,点击2这个图标显示在第0行,
不管按钮中响应一次性插入多少张图标,如果多次单击插入图标按钮,再获取的行号就不准了
...全文
219 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zgl7903 2019-06-14
  • 打赏
  • 举报
回复
OnClick 中 应该用 传递进来的参数 (NMLISTVIEW *) 中的 iItem 和 iSubItem 来判断当前点击的项,


schlafenhamster 2019-06-13
  • 打赏
  • 举报
回复
试试
m_ListCtrl.InsertItem(0, add, index);
大树学长 2019-06-13
  • 打赏
  • 举报
回复
问题是,比如点击插入图标按钮,就会在list中插入一张图标,连续点击10次就会插入10张图标,然后获取行号,选中最上面的图标会显示在第9行,选中最下面的图标会显示在第0行,但是 int index = m_ImageList.Add(pBitmap, RGB(0, 0, 0));//这个值顺序还是0-9,为什么行号这个值不一致,不是应该都从0-9这样吗???
许文君 2019-06-13
  • 打赏
  • 举报
回复
m_ImageList.Add add顺序会打乱,为何不全都用insertitem

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧