Как реализовать множественный выбор в просмотре списка с помощью LVN_MARQUEEBEGIN - PullRequest
0 голосов
/ 10 июля 2019

У меня есть список с включенным множественным выбором.Пользователь может получить множественный выбор, щелкая несколько элементов, одновременно нажимая клавиши Shift или Ctrl.Я пытаюсь реализовать множественный выбор, нажимая и удерживая левую кнопку мыши и перетаскивая элементы, чтобы выбрать их.

Я пытался ответить на LVN_MARQUEEBEGIN согласно документации Microsoft.Моя программа никогда не получает это сообщение.Документация не говорит, как ответить на это сообщение.

Вот пример моего кода:

static int  Count ;
static int  SelectedItem ;

case WM_NOTIFY :

  switch ((reinterpret_cast <NMHDR *> (lParam))->code) {

    case NM_CLICK:
        #define pnmitem ((NMITEMACTIVATE *) lParam)
        if (SelectedItem == pnmitem->iItem) {  // item clicked again
            SelectedItem = -1 ;
            ListView_SetItemState (hwndListView,-1,0,0x000F) ;
        } /* if (SelectedItem == pnmitem->iItem) */
        else {
            if (pnmitem->iItem != -1)
                SelectedItem = pnmitem->iItem ;
        } /* else */

        Count = ListView_GetSelectedCount (hwndListView) ;
        switch (Count) {
            case 0 :
                EnableWindow (hwndMerge,false) ;
                EnableWindow (hwndSplit,false) ;
                break ;
            case 1 :
                EnableWindow (hwndMerge,false) ;
                EnableWindow (hwndSplit,true) ;
                break ;
            default :
                EnableWindow (hwndMerge,true) ;
                EnableWindow (hwndSplit,true) ;
        } /* switch (Count) */
        return true ;

    case LVN_MARQUEEBEGIN :
        ;
        ;
        return 0 ;

  } /* switch ((reinterpret_cast <NMHDR *> (lParam))->code) */
  break ; 
  1. Является ли LVN_MARQUEEBEGIN правильным сообщением для моего случая.
  2. Мне кажется, должно быть другое сообщение, когда выбор сделан.Или почему Microsoft назвала это xxxbegin.Но я не смог найти это другое сообщение.
  3. Может кто-нибудь посоветовать мне, где я могу найти пример или пример кода для использования LVN_MARQUEEBEGIN.

Спасибо всем

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...