Текущий архив: 2005.09.25;
Скачать: CL | DM;
Вниз
Не работает LVM_GETITEMTEXT Найти похожие ветки
← →
***_Diman_*** (2005-08-02 07:50) [0]сабж. уже третий день бьюсь и всё без толку. код такой (Цэ):
INT i;
LVITEM lvi;
i = SendMessage(ListView1,LVM_GETITEMCOUNT,NULL,NULL);
while (i != 0)
{
SendMessage(ListView1,LVM_GETITEMTEXT,WPARAM(i),LPARAM(&lvi);
MessageBox(0,lvi.pszText,TEXT("text"),MB_OK);
i--;
}
плюс ко всему - как отловить WM_LBUTTONDBLCLICK на ListView?
← →
begin...end © (2005-08-02 08:52) [1]> ***_Diman_*** (02.08.05 7:50)
1. Структуру LVITEM нужно инициализировать. В частности, должна быть выделена память для буфера, который будет принимать текст. Обо всём этом можно узнать из справки или MSDN (см. описание сообщения LVM_GETITEMTEXT или макроса ListView_GetItemText).
2. LVM_GETITEMCOUNT возвращает число элементов. Однако индекс последнего элемента будет меньше количества элементов на единицу, потому что их индексация начинается с нуля. В Вашем коде это не учтено.
3. Си я уже основательно позабыл, поэтому написал и привожу рабочий (на первый взгляд) код на Delphi:const
MaxLength = 255; // Взято совершенно "с потолка"
var
I: Integer;
Item: LV_ITEM;
begin
I := SendMessage(ListView.Handle, LVM_GETITEMCOUNT, 0, 0);
if I > 0 then
begin
GetMem(Item.pszText, MaxLength);
try
Item.cchTextMax := MaxLength;
Item.iSubItem := 0;
repeat
Dec(I);
Item.iItem := I;
SendMessage(ListView.Handle, LVM_GETITEMTEXT, I, Integer(@Item));
MessageBox(0, Item.pszText, "Text", MB_OK);
until I = 0;
finally
FreeMem(Item.pszText)
end
end
end.
← →
***_Diman_*** (2005-08-02 10:28) [2]Окей, спасибо!
Страницы: 1 вся ветка
Текущий архив: 2005.09.25;
Скачать: CL | DM;
Память: 0.44 MB
Время: 0.039 c