Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.12.2012, 02:15   #1
Skullet
Пользователь
 
Регистрация: 26.12.2011
Сообщений: 10
По умолчанию С++, MFC, ListBox

Такая проблемка: Есть 2 элемента ListBox. В первом находятся некоторые записи и предусмотрена возможность множественного выбора. Нужно перенести выделенные записи во второй листбокс...

вот что получилось: выделил 3 элемента, "6" выделил последним, поэтому и отсчёт трёх записей пошёл от шестёрки. хотелось бы сделать чтобы добавлялись только выбранные и даже если выбираешь через один элемент.
Вот мой код:
PHP код:
CString str;
            
int nIndex;
            
UpdateData();  
            
int i=m_fam.GetCaretIndex( ); 
            
// Конец отметки (фокус)
            
int k=m_fam.GetAnchorIndex( ); 
            
//Начало отметки (анкер)
            
if (k>i
                
nIndex=i;
            else 
                
nIndex=k
            
int j m_fam.GetSelCount( );
            while (
j--){
                
m_fam.GetText(nIndex++,str);
                
str+="\n";
                
m_dobavit.AddString(str);
            }
            
UpdateData(FALSE); 
m_fam - это переменная поля "Фамилия", тип -"ClistBox", категория "Control"
m_dobavit - это переменная поля, в которое добавляются записи, тип и категория та же.
Skullet вне форума Ответить с цитированием
Старый 13.12.2012, 02:43   #2
Perchik71
С++, Delphi
Форумчанин
 
Аватар для Perchik71
 
Регистрация: 24.11.2012
Сообщений: 495
По умолчанию

nIndex-j вместо nIndex++
что будет?
Если помог, тут весы есть , Вам не сложно, а мне приятно.
Perchik71 вне форума Ответить с цитированием
Старый 13.12.2012, 03:43   #3
Skullet
Пользователь
 
Регистрация: 26.12.2011
Сообщений: 10
По умолчанию

Если так, как у меня выделено на картинке, то заполнит как надо, т.е. 4, 5, 6, но если выделить например 4,5,2 то выходит за пределы и программа аварийно завершается
Skullet вне форума Ответить с цитированием
Старый 13.12.2012, 03:59   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

http://msdn.microsoft.com/en-us/libr...(v=vs.80).aspx
не?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 13.12.2012, 04:31   #5
Skullet
Пользователь
 
Регистрация: 26.12.2011
Сообщений: 10
По умолчанию

Что то я не пойму, как это работает
Skullet вне форума Ответить с цитированием
Старый 13.12.2012, 04:39   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

там пример есть.
через функцию можно получить индексы всех выбранных элементы, потом по этим индексам копируете данные.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 13.12.2012, 12:54   #7
Skullet
Пользователь
 
Регистрация: 26.12.2011
Сообщений: 10
По умолчанию

PHP код:
// Получить индексы всех выбранных элементов.
Int nCount pmyListBox->GetSelCount ();
CArray <int,intaryListBoxSel;

aryListBoxSel.SetSize(nCount);
pmyListBox->GetSelItems(nCountaryListBoxSel.GetData()); 
по вот этому примеру я так понял, что мой код будет выглядеть так:
PHP код:
int nCount m_fam.GetSelCount();
CArray <int,intaryListBoxSel;
aryListBoxSel.SetSize(nCount);
m_fam.GetSelItems(nCountaryListBoxSel.GetData()); 
Но где будут храниться индексы и как обратиться к ним?
Skullet вне форума Ответить с цитированием
Старый 13.12.2012, 13:03   #8
Perchik71
С++, Delphi
Форумчанин
 
Аватар для Perchik71
 
Регистрация: 24.11.2012
Сообщений: 495
По умолчанию

CArray <int,int> aryListBoxSel;

не когда с этим не сталкивался, но у меня подозрения
что первый индекс это типо индефикатор 0...n а второй, содержит индекс на сам элемент.
Если помог, тут весы есть , Вам не сложно, а мне приятно.
Perchik71 вне форума Ответить с цитированием
Старый 13.12.2012, 13:07   #9
Perchik71
С++, Delphi
Форумчанин
 
Аватар для Perchik71
 
Регистрация: 24.11.2012
Сообщений: 495
По умолчанию

поюзал гугл и нашёл метод
мсдн
Если помог, тут весы есть , Вам не сложно, а мне приятно.
Perchik71 вне форума Ответить с цитированием
Старый 13.12.2012, 14:46   #10
Skullet
Пользователь
 
Регистрация: 26.12.2011
Сообщений: 10
По умолчанию

C этими библиотеками я совсем запутался, если бы в примере было показано, как посмотреть строки, которые содержаться под этими индексами, которые хранятся в массиве. Так даже непонятно, как пройтись по этому массиву в цикле что ли... Сколько работал на консольном приложении, никогда не было проблем с массивами, а в MFC непонятный синтаксис
Skullet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Drag&Drop NO MFC! NO MFC! Антоним Win Api 1 12.11.2012 21:43
Из файла в ListBox (MFC) tema654 Visual C++ 1 18.03.2012 17:48
изменение позиций элементов ListBox (C++,MFC) Gold_Ujin Помощь студентам 4 29.02.2012 01:42
Поменять текст шрифта и ListBox (MFC) ACE Valery Visual C++ 3 04.05.2009 10:34
MFC: ListBox umnick Visual C++ 2 29.10.2008 22:28