Добрый день. У меня маленький вопрос самого начинающего программера: как узнать, какой пункт выбран у ListView? Везде идут примеры с определением текста, а мне надо какой-то идентификатор, но не порядковый номер, т.к. строки могут сортироваться. Думается что надо свойству imask поставить значение отличное от LVIF_TEXT (это структура LV_ITEM), что-то не могу понять принцип. Опять же, какое свойство при создании означает идентификатор? По ин.язу у меня двойка, поэтому маленько не до конца понял принцип работы. Пожалуйста, подскажите вкратце как искать
Код (Text): Каждому элементу класса LISTBOX отводится дополнительных 4 байта = DWord, в которые программист может вносить свои данные, и в случае необходимости - прочитать их. записать: invoke MessageBoxA,окно_списка,LB_SETITEMDATA,номер_элемента_списка_начиная_с_0,желаемое_значение прочитать: invoke MessageBoxA,окно_списка,LB_GETITEMDATA,номер_элемента_списка_начиная_с_0,0
edemko Направление понял, пошел глядеть. Подскажите, пожалуйста, может вместо MessageBox подставлять SendMessage?
edemko, человеку про ListView надо. А ListBox - это совсем другая история, он простой, как кирзовый сапог. Мысля, значит, такая: для каждого элемента нужно вызвать LVM_GETITEMSTATE с lParam=LVIS_SELECTED, и если сообщение вернёт что-то, отличное от нуля, значит, соотв. пункт выбран. Можно и через LVM_GETITEM, но там надо структуру заполнять.
Уважаемые специалисты, подскажите тогда про LVM_GETITEM. Только там мне надо не конструкцию mov lvi.imask,LVIF_TEXT а какое-то другое значение вместо LVIF_TEXT, подскажите что использовать
И еще вопрос: расскажите на пальцах как работает iItem и как iSubItem? Во всех источниках одно и тоже- непонятно! Если я создаю одно только поле, в котором 3 записи, то у меня так будет правильно? iItem iSubItem 0 1 0 2 0 3 А если так: iItem iSubItem 0 1 1 8 1 16 что второе означает? Я пока не могу разобраться что к чему
Интересный параметр lParam. Его можно использовать как GUID? Вроде при перемещении строк он не меняется же? Если так, то как его получить? lParam - определяемое пользователем значение, которое будет использоваться, когда вы будете сортировать элементы в listview. Кратко говоря, когда вы будете указывать listview отсортировать item'ы, listview будет сравнивать item'ы попарно. Он будет посылать значение lParam обоих элементов вам, чтобы вы могли pешить, какое из этих двух должно быть в списке идти pаньше.
baldr гуид можно сделать и самодельный у которого размер даже в 8 бит более чем предостаточно. Поэтому мне надо хоть что-то похожее на уникальность, а не по всем стандартам. Что значит ссылочки? Что они из себя представляют? И... это... я не знаю что такое атомы на винапи, может в 2-х словах просвятите?
strange2007, Это что ж за объекты, у которых глобально уникальных идентификаторов всего 256? Под «ссылочки» имелись в виду указатели/адреса. Атом — 16-битный идентификатор для произвольной C-строки, может быть глобальным. RegisterClass(), к примеру, его возвращает. Подробнее, естественно, в MSDN.
baldr, строк у меня не более 100, поэтому идентификатор глобальный в рамках одного списка Подскажите, как атом связывать со строкой?