Выдиление нескольких итемов в SysListView32

Тема в разделе "WASM.WIN32", создана пользователем Toxasoft, 18 мар 2011.

  1. Toxasoft

    Toxasoft New Member

    Публикаций:
    0
    Регистрация:
    20 сен 2010
    Сообщения:
    188
    Здраствуйте!
    Подскажите плиз как получить индексы выделенных в данный момент итемов?
     
  2. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    С помощью LMV_GETSELECTEDCOUNT получаешь число выбранных итемов, далее через LVM_GETNEXTITEM(LVIS_SELECTED) перебираешь все выбранные.
     
  3. Toxasoft

    Toxasoft New Member

    Публикаций:
    0
    Регистрация:
    20 сен 2010
    Сообщения:
    188
    OK попробую. спс
     
  4. Toxasoft

    Toxasoft New Member

    Публикаций:
    0
    Регистрация:
    20 сен 2010
    Сообщения:
    188
    У мня еще один вопрос...
    Почему и как исправить, что некоторые папки не идентифицируются
    при их поиске как "Папка"

    Например:
    Documents and Settings - папка
    Program Files - пустой файл

    Вот код:

    Код (Text):
    1. .data
    2. sTypeN db "*.*",0
    3. template db "%lu",0
    4. szFolder db "<Folder>",0
    5.  
    6. ReadFolder Proc
    7. Local FindF:WIN32_FIND_DATA
    8. Local Buff[256]:BYTE
    9. Local SBuff[40]:BYTE
    10. Local hFind:DWORD
    11. LOCAL lvi:LV_ITEM
    12.     invoke lstrcpy, addr Buff, addr Patch
    13.     invoke lstrcat, addr Buff, addr sTypeN    
    14.     invoke FindFirstFile,addr Buff,addr FindF
    15.     mov hFind,eax
    16.     invoke GetLastError
    17.     cmp eax,ERROR_SUCCESS
    18.     jnz ExitRP
    19.     mov lvi.imask,LVIF_TEXT+LVIF_PARAM
    20.     mov lvi.iItem,ebx
    21.     mov lvi.iSubItem,0
    22.     lea eax,FindF.cFileName
    23.     mov lvi.pszText,eax
    24.     mov lvi.lParam,ebx
    25.     invoke SendMessage,hList, LVM_INSERTITEM,0, addr lvi
    26.     mov lvi.imask,LVIF_TEXT
    27.     mov lvi.iSubItem,1
    28.     invoke wsprintf,addr SBuff, addr template,FindF.nFileSizeLow
    29.     .if FindF.dwFileAttributes==FILE_ATTRIBUTE_DIRECTORY
    30.         invoke lstrcpy, addr SBuff, addr szFolder  
    31.     .endif
    32.     lea eax,SBuff
    33.     mov lvi.pszText,eax
    34.     mov lvi.lParam,ebx
    35.      invoke SendMessage,hList,LVM_SETITEM, 0,addr lvi
    36.     inc ebx
    37. Next:
    38.     invoke FindNextFile,hFind,addr FindF
    39.     invoke GetLastError
    40.     cmp eax,ERROR_SUCCESS
    41.     jnz ExitRP
    42.     mov lvi.imask,LVIF_TEXT+LVIF_PARAM
    43.     mov lvi.iItem,ebx
    44.     mov lvi.iSubItem,0
    45.     lea eax,FindF.cFileName
    46.     mov lvi.pszText,eax
    47.     mov lvi.lParam,ebx
    48.     invoke SendMessage,hList, LVM_INSERTITEM,0, addr lvi
    49.     mov lvi.imask,LVIF_TEXT
    50.     mov lvi.iSubItem,1
    51.     invoke wsprintf,addr SBuff, addr template,FindF.nFileSizeLow
    52.     .if FindF.dwFileAttributes==FILE_ATTRIBUTE_DIRECTORY
    53.         invoke lstrcpy, addr SBuff, addr szFolder  
    54.     .endif
    55.     lea eax,SBuff
    56.     mov lvi.pszText,eax
    57.     mov lvi.lParam,ebx
    58.      invoke SendMessage,hList,LVM_SETITEM, 0,addr lvi
    59.     inc ebx
    60.     jmp Next
    61. ExitRP:
    62.     xor ebx,ebx
    63.     Ret
    64. ReadFolder EndP
     
  5. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    Имеется в виду почему для Program Files не срабатывает WIN32_FIND_DATA.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY?
    Потому что dwFileAttributes это набор флагов, а Вы его сравниваете с одним флагом. Вероятно, для Documents and Settings никаких других флагов не установлено, поэтому условие соблюдается, а для Program Files еще какие-то флаги.
    Код должен выглядеть примерно так:
    Код (Text):
    1. test wfd.dwFileAttributes, FILE_ATTRIBUTE_DIRECTORY
    2. .if !ZERO?
    3. ; папка
    4. .endif
     
  6. Toxasoft

    Toxasoft New Member

    Публикаций:
    0
    Регистрация:
    20 сен 2010
    Сообщения:
    188
    ГГГ... Спасибо за подсказку... но не пашет
     
  7. Toxasoft

    Toxasoft New Member

    Публикаций:
    0
    Регистрация:
    20 сен 2010
    Сообщения:
    188
    Вот исходник. кому не тяжело проверьте плиз, что не так
     
  8. Toxasoft

    Toxasoft New Member

    Публикаций:
    0
    Регистрация:
    20 сен 2010
    Сообщения:
    188
    Ой Сорри... Все норм... Это я затупил...

    KeSqueer Спасибо за помощь.
     
  9. mrcrown

    mrcrown Member

    Публикаций:
    0
    Регистрация:
    18 янв 2008
    Сообщения:
    227
    Это однозначно в БЕГИНЕРС!
     
  10. Toxasoft

    Toxasoft New Member

    Публикаций:
    0
    Регистрация:
    20 сен 2010
    Сообщения:
    188
    mrcrown
    Можно по русски...