Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2005.11.27;
Скачать: [xml.tar.bz2];

Вниз

Глюки ListView   Найти похожие ветки 

 
***_Diman_***   (2005-09-23 20:34) [0]

Знатоки Си, подскажите убогому... фигня какая-то! в общем вот...
это в WM_NOTIFY торчит. Отлавливается без проблем
//------------------------------
(wParam == ID_LV2)
{
pNMHDR = (LPNMHDR)lParam;
if (pNMHDR->code == NM_DBLCLK)
{
ExchangeText();
//MessageBox(hWnd,TEXT("Passed"),TEXT("answer"),MB_OK); если мессажить после вызова процедуры то ВСЁ ОК !!! идеально просто !
//а вот БЕЗ этой приблуды - косяк - меняет "неизв." на "нет" у любого первого итема на который кликнем,
//а дальше - как проге заблагорассудится, иногда реагирует, иногда нет, в конце концов виснет намертво.
//Вот в чём прикол? RedrawWindow, Update, WM_NOTIFY - всё без толку. Как будто не обновляется
//этот самый листвью...
};
break;
}
//------------------------------
эта процедурка тоже пашет как надо - при двойном клике на итеме листвью меняет текст в ячейке
LRESULT ExchangeText(void)
{
LVITEM lvi;
int  i;
MFlag = TRUE;
i = SendMessage(ListView2,LVM_GETITEMCOUNT,NULL,NULL);
while (i >= 0)
{
if (SendMessage(ListView2,LVM_GETITEMSTATE,WPARAM(i),LPARAM(LVIS_SELECTED)))
{
break;
}
i--;
}
lvi.mask = LVIF_TEXT;
lvi.iItem = i;
lvi.lParam = i;
lvi.iSubItem = 2;
SendMessage(ListView2,LVM_GETITEMTEXT,WPARAM(i),(LPARAM)&lvi);
if ((wcscmp(LPWSTR(lvi.pszText),TEXT("неизв.")) == 0) || (wcscmp(LPWSTR(lvi.pszText),TEXT("нет")) == 0))
{
lvi.pszText = TEXT("есть");
}
else
{
lvi.pszText = TEXT("нет");
}
SendMessage(ListView2,LVM_SETITEMTEXT,WPARAM(i),(LPARAM)&lvi);
return 0;
}
P.S. Если код корявый - не пинайте ногами. Novice потому что.


 
begin...end ©   (2005-09-23 20:58) [1]

> ***_Diman_***   (23.09.05 20:34)

> LVITEM lvi;
> ...
> lvi.mask = LVIF_TEXT;
> lvi.iItem = i;
> lvi.lParam = i;
> lvi.iSubItem = 2;
> SendMessage(ListView2,LVM_GETITEMTEXT,WPARAM(i),(LPARAM)&lvi);

В упор не вижу инициализации поля lvi.pszText указателем на область памяти достаточного размера и поля lvi.cchTextMax размером этой области.


 
***_Diman_***   (2005-09-23 21:04) [2]

Гммм.... Хорошо, попробую. Спасибо.


 
begin...end ©   (2005-09-23 21:28) [3]

> ***_Diman_***   (23.09.05 20:34)

И ещё:

> (wParam == ID_LV2)

idCtrl

Identifier of the common control sending the message. This identifier is not guaranteed to be unique. An application should use the hwndFrom or idFrom member of the NMHDR structure (passed as the lParam parameter) to identify the control.


 
марсианин ©   (2005-09-24 19:53) [4]

ты уверен, что цикл правильный?
итемы нуиеруются от 0 до Count - 1

да и как-то странно ты делаешь..
я бы поставил обработчик на двойной клик, определял бы номер при помощи LVM_HITTEST..



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2005.11.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.013 c
9-1120564097
www2005
2005-07-05 15:48
2005.11.27
DirectX или OpenGL


2-1131628633
Piero
2005-11-10 16:17
2005.11.27
Получить Handle запускаемого процесса


5-1113600533
Бывший студент
2005-04-16 01:28
2005.11.27
Перекрываем TCustomGrid.DrawCell


2-1131314313
Michael5
2005-11-07 00:58
2005.11.27
Заклинило на примитивной вещи - не могу отредактировать запись!


14-1130956736
Adil
2005-11-02 21:38
2005.11.27
Midlet na Java i problema s Nokia





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский