LBS_OWNERDRAWVARIABLE - реализация

Тема в разделе "WASM.WIN32", создана пользователем n0name, 12 ноя 2005.

  1. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    Создаю я диалог.

    На WM_INITDIALOG - заполняю ListBox.

    На WM_MEASUREITEM - заполняю структуру.

    При отрисовке ListBox'a я не могу получить какой элемент отрисовывать. Посылаю LB_GETTEXT выводит всякую чушь.
     
  2. AsmGuru62

    AsmGuru62 Member

    Публикаций:
    0
    Регистрация:
    12 сен 2002
    Сообщения:
    689
    Адрес:
    Toronto
    LB_GETTEXT можно использовать если есть флаг LBS_HASSTRINGS при создании листа.
     
  3. AsmGuru62

    AsmGuru62 Member

    Публикаций:
    0
    Регистрация:
    12 сен 2002
    Сообщения:
    689
    Адрес:
    Toronto
    Ещё посмотри на DRAWITEMSTRUCT.itemData - там может быть LPARAM посланный через LB_ADDSTRING.
     
  4. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    Я отрисовываю ListBox, чтоб сделать сортировку, однако, как я понял, нельзя использовать флаг HASSTRINGS.
     
  5. AsmGuru62

    AsmGuru62 Member

    Публикаций:
    0
    Регистрация:
    12 сен 2002
    Сообщения:
    689
    Адрес:
    Toronto
    Если в листе не строки, а например, структуры, тогда HASSTRINGS не нужен.

    Для сортировки нужен обработчик WM_COMPAREITEM.
     
  6. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    Код (Text):
    1. The LBS_SORT style causes the list box to sort strings alphabetically that are added to the list box with an LB_ADDSTRING message in either of these cases:
    2.  
    3. * If the list box is an owner-drawn list box with the LBS_HASSTRINGS style
    4. * If the list box is not an owner-drawn list box
    5.  




    В MFC используется DWI^.ItemData. Однако когда его использую я у меня выводиться корректно только последний добавленный элемент.
     
  7. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    То есть если я использую собственную прорисовку и LBS_HASSTRINGS то система не будет отслыать WM_COMPAREITEM.
     
  8. AsmGuru62

    AsmGuru62 Member

    Публикаций:
    0
    Регистрация:
    12 сен 2002
    Сообщения:
    689
    Адрес:
    Toronto
    ...н-да... нет больше идей у меня...



    Если не против - можешь послать код на asmguru62@hotmail.com - может чем помогу.
     
  9. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    Он чуть-чуть не на асме, а точнее совсем не на нём :)

    Хотя если знаешь синтаксис Pascala, с удовольствием приму твою помошь.
     
  10. AsmGuru62

    AsmGuru62 Member

    Публикаций:
    0
    Регистрация:
    12 сен 2002
    Сообщения:
    689
    Адрес:
    Toronto
    Pascal не проблема... хотя давно это было.