Поиск:

Закрытая темаСоздание новой темы Создание опроса
> POSITION при использовании CListCtrl, а точнее GetFirstSelectedItemPosition() 
:(
    Опции темы
Nuzur
Дата 13.10.2006, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 4.7.2004

Репутация: 3
Всего: 5



Вот я получил
Код

POSITION pos = m_ListCtrl.GetFirstSelectedItemPosition();

и мне нужно получить текстовое содержимое по данной позиции, и вроде все ясно кроме того что я никак не могу найти описание структуры POSITION.

Для того, что бы потом еее использовать
Код

LVITEM * tItem = m_ListCtrl.GetItemData(pos->?);


Это сообщение отредактировал(а) Nuzur - 13.10.2006, 10:07


--------------------
Never again...
PM MAIL   Вверх
_hunter
Дата 13.10.2006, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 5
Всего: 98



а кликнуть по этой POSITION правой кнопкой и перейти к declaration?
просто приводи pos к int' у:
m_ListCtrl.GetItemData((int)pos - 1);


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Kostt
Дата 13.10.2006, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 169
Регистрация: 8.1.2006
Где: Томск

Репутация: 2
Всего: 3



Не понял, что же ты хочешь получить - текстовое содержимое элемента или 
привязанные к нему данные.
Попробуй примерно так:
Код

POSITION pos = m_ListCtrl.GetFirstSelectedItemPosition();

while(pos)
{
        int nItem = m_ListCtrl.GetNextSelectedItem(pos);
        LVITEM * tItem = m_ListCtrl.GetItemData(nItem);//Получение данных
        CString strItemText = m_ListCtrl.GetItemText(nItem);//Получение текста
}

PM MAIL   Вверх
Nuzur
Дата 13.10.2006, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 4.7.2004

Репутация: 3
Всего: 5



Kostt, 
Код

POSITION pos = m_ListCtrl.GetFirstSelectedItemPosition();
CString strDate;
while(pos)
{
int nItem = m_ListCtrl.GetNextSelectedItem(pos);
LVITEM * tItem = m_ListCtrl.GetItemData(nItem);//Получение данных
strDate = m_ListCtrl.GetItemText(nItem);//Получение текста
}

Код

: error C2440: 'initializing' : cannot convert from 'unsigned long' to 'struct tagLVITEMA *'
        Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
: error C2661: 'GetItemText' : no overloaded function takes 1 parameters

так?

_hunter, 
Код

                    LVITEM * tItem = m_ListCtrl.GetItemData((int)pos - 1);

Код

: error C2440: 'initializing' : cannot convert from 'unsigned long' to 'struct tagLVITEMA *'
        Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast


По декларации ходил и вот что получил:
Код

struct __POSITION { };
typedef __POSITION* POSITION;



--------------------
Never again...
PM MAIL   Вверх
_hunter
Дата 13.10.2006, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 5
Всего: 98



так это не в pos' е проблема (для проверки скомпиль такой:
m_ListCtrl.GetItemData((int)pos - 1);
код)
а в попытке неявного приведения DWORD_PTR к LVITEM*

если уверен в том, что ты делае -- приводи тип явно:
LVITEM * tItem = (LVITEM *)(m_ListCtrl.GetItemData((int)pos - 1));


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Kostt
Дата 13.10.2006, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 169
Регистрация: 8.1.2006
Где: Томск

Репутация: 2
Всего: 3



strDate = m_ListCtrl.GetItemText(nItem,0);

Вот такое попробуй.
PM MAIL   Вверх
Nuzur
Дата 13.10.2006, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 4.7.2004

Репутация: 3
Всего: 5



_hunter, 
Код

LVITEM * tItem = (LVITEM *)(m_ListCtrl.GetItemData((int)pos - 1));
CString str = tItem->pszText;


в результате tItem = 0 и вылет на попытке присвоить str
 smile 


--------------------
Never again...
PM MAIL   Вверх
_hunter
Дата 13.10.2006, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 5
Всего: 98



значит ты туда ничего не записал.


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Nuzur
Дата 13.10.2006, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 4.7.2004

Репутация: 3
Всего: 5



_hunter, поверьте наслово записывал и выбрал на екране smile

Код

                    LVITEM lvi;
                    ::ZeroMemory(&lvi, sizeof(LVITEM));
                    lvi.mask = LVIF_TEXT;
                    lvi.pszText = (char *) strValue.operator LPCTSTR();
                    m_ListCtrl.InsertItem(&lvi);


на екране оно ж видно smile
И заглушка стоит
Код


                POSITION pos = m_ListCtrl.GetFirstSelectedItemPosition();

                if(pos == NULL)
                {
                    AfxMessageBox("...");
                    return;
                }


Это сообщение отредактировал(а) Nuzur - 13.10.2006, 16:15


--------------------
Never again...
PM MAIL   Вверх
_hunter
Дата 13.10.2006, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 5
Всего: 98



не совсем понял при чем тут выбор на экране (и как это вообще на экране можно увидеть)
так же непонятно при чем тут этот код...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Nuzur
Дата 13.10.2006, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 4.7.2004

Репутация: 3
Всего: 5



_hunter, ладно, давайте по порядку куда я ничего не записал?


--------------------
Never again...
PM MAIL   Вверх
_hunter
Дата 13.10.2006, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 5
Всего: 98



в Item' s data...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Earnest
Дата 13.10.2006, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



GetItemData - это lParam структуры LVITEM, не более. Нельзя ее преобразовывать к LVITEM*. Для того, чтобы получить доступ к данным итема, есть куча функций GetXXX, например, GetItemText (nItem). 


--------------------
...
PM   Вверх
icqhool
Дата 22.9.2009, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 8.9.2009

Репутация: нет
Всего: нет



можно приткнуться в эту тему? вот мой код:

Код

POSITION pos = m_ctlList.GetFirstSelectedItemPosition();
if (pos == NULL)
m_ctlList.AddItem( _T("nItem"),_T("no item selected"));
else
{
while (pos)
{
        int i=0;
        //nItem=0;
nItem[i] = m_ctlList.GetNextSelectedItem(pos);
test.Format("%d",nItem[i]);
m_ctlList.AddItem( _T("nItem"),_T(test));



 while(!eof(fh))
  {
    _read(fh,&mstruct,sizeof mstruct);
   
    if(nItem[i]==2)
    {
        out<<ms.k<<'\n';
    }
         if(nItem[i]==3)
    {
        out1<<ms.m<<'\n';
    }
  }
i++;
}}  


при выделении 2-го и 3-го элемента записывает только второй

если выделить нулевой или первый элемент и второй то не запишет ничего => почему-то запоминается номер только первого выделенного элемента а вторых какбы нет...
 что я делаю нетак?
PM MAIL   Вверх
Earnest
Дата 23.9.2009, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



icqhool, не надо реанимировать усопшие темы. Открой свою, так скорее дождешься ответов.


--------------------
...
PM   Вверх
  
Закрытая темаСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0579 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.