win32 从列表视图中检索所有选定项目的索引

0 c winapi

有谁知道如何解决这个问题我想为列表中的每个选定项目执行代码

            itemint=SendMessage(hwndList,LVM_GETNEXTITEM,-1,LVNI_SELECTED))
              {
                while (itemint != -1)
                  {
                    itemint =SendMessage(hwndList,LVM_GETNEXTITEM, itemint, LVNI_SELECTED);
                      //// 
                  }
Run Code Online (Sandbox Code Playgroud)

无法从选定的项目中找到第一个(索引最低的)项目

Dav*_*nan 5

您的迭代代码本质上是正确的。问题是您在第二次调用 后正在做您的工作SendMessage,正如您的注释行的位置所证明的那样。将工作移至第二次调用之前SendMessage,您将不会跳过第一个选定的项目。

itemint = SendMessage(hwndList, LVM_GETNEXTITEM, -1, LVNI_SELECTED))
{
    while (itemint != -1)
    {
        // do work on selected item here
        itemint = SendMessage(hwndList, LVM_GETNEXTITEM, itemint, LVNI_SELECTED); 
    }
}
Run Code Online (Sandbox Code Playgroud)

无论如何,您的代码会错过第一个选定的项目,但也会向您显示索引为 -1 的最终项目。