![]() |
|
![]() ![]() ![]() |
|
kometa_triatlon |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 384 Регистрация: 7.1.2005 Где: Киев Репутация: 1 Всего: 6 |
Мне нужно сделать Листбокс, из которого по нажатию Delete удалялись бы выделенные строки, казалось бы, что сложного. Я вот делал на диалоге кнопку, которая делает это:
Но кнопка это не совсем то, захотелось дать юзеру возможность работать с помощью delete. Наследовал свой класс от CListBox, создал обработчик:
Но не работает ![]() ![]() Отладчик показывает что Symbol "iSelCount" not found, значения его показать не может, в итоге я выделяю непонятно сколько памяти... Вот сижу и думаю, наверное я в этой жизни что-то делаю не так... -------------------- Всё очень просто: сказки обман, Солнечный остров скрылся в туман, Замков воздушных не носит земля, Кто-то ошибся, ты или я. -------------- Программирование - самое большое удовольствие, которое вы можете получить, будучи одетым. |
||||
|
|||||
SergeCpp |
|
|||
![]() ![]() ![]() Профиль Группа: Участник Сообщений: 955 Регистрация: 8.8.2005 Где: At Home Репутация: 5 Всего: 124 |
GetSelItems( GetSelCount() /* а лучше iSelCount
![]() а вообще-то лучше назвать не iSelIndexes, а pSelIndexes... DeleteString( iSelIndexes[ i ] - i ); // хитроумная конструкция... ![]() Это сообщение отредактировал(а) SergeCpp - 25.11.2006, 19:40 |
|||
|
||||
kometa_triatlon |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 384 Регистрация: 7.1.2005 Где: Киев Репутация: 1 Всего: 6 |
Ты в курсе, что означают параметры GetSelCount?
Так что если я хочу, чтобы пользователь мог удалить последнюю строку, то первым параметром мне нужно передавать именно количество всех элементов. Что касается
То она как раз правильная. Пусть пользователь выбрал 3 и 5-ую строки. При проходе по циклу я удалю 3-ю, 5-ая сместится на четвертое место и мне уже надо будет удалить четвертую. Эти строки написаны кровью ![]() Не может быть, чтобы кто-то не делал чего-нибудь похожего... Отзовитесь, кто знает! -------------------- Всё очень просто: сказки обман, Солнечный остров скрылся в туман, Замков воздушных не носит земля, Кто-то ошибся, ты или я. -------------- Программирование - самое большое удовольствие, которое вы можете получить, будучи одетым. |
||||
|
|||||
SergeCpp |
|
|||
![]() ![]() ![]() Профиль Группа: Участник Сообщений: 955 Регистрация: 8.8.2005 Где: At Home Репутация: 5 Всего: 124 |
|
|||
|
||||
kometa_triatlon |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 384 Регистрация: 7.1.2005 Где: Киев Репутация: 1 Всего: 6 |
?? Ему и не нужно содержать все индексы, только выделенных строк, именно столько памяти я и выделяю... В первом посте приведен работающий код. Вся проблема в том, я что прога вылетает на строке:
Я пробовал посмотреть под отладкой, сколько же строк выделено, отладчик ругается symbol iSelCount not found. Пробовал запихнуть в watch GetSelCount(), тоже нифига... -------------------- Всё очень просто: сказки обман, Солнечный остров скрылся в туман, Замков воздушных не носит земля, Кто-то ошибся, ты или я. -------------- Программирование - самое большое удовольствие, которое вы можете получить, будучи одетым. |
||||
|
|||||
SergeCpp |
|
||||
![]() ![]() ![]() Профиль Группа: Участник Сообщений: 955 Регистрация: 8.8.2005 Где: At Home Репутация: 5 Всего: 124 |
У Вас nMaxItems == GetCount(), что >= выделяемого Вами iSelCount == GetSelCount() Так и не попробовали?..
|
||||
|
|||||
kometa_triatlon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 384 Регистрация: 7.1.2005 Где: Киев Репутация: 1 Всего: 6 |
Попробовал, ничего не дало, что неудивительно, ведь до той строки даже не доходит, вылетает при выделении памяти.
Что касается large enough for the number of integers specified by nMaxItems, то как показывает практика, все равно, что передавать в качестве первого аргумента: GetCount или GetSelCount. Правильней наверное GetSelCount, но это моей проблемы мало касается... Попробовал еще так:
после выполнения GetSelItems(GetSelCount(), arrSelIndexes.GetData()); Размер массива становится равным -1.... Что за бред, почему я не могу внутри наследованного класса узнать количество выделенных строк? Это сообщение отредактировал(а) kometa_triatlon - 25.11.2006, 23:02 -------------------- Всё очень просто: сказки обман, Солнечный остров скрылся в туман, Замков воздушных не носит земля, Кто-то ошибся, ты или я. -------------- Программирование - самое большое удовольствие, которое вы можете получить, будучи одетым. |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
1) Чтобы отладчик показывал значения переменных, убедись, что у тебя нормальная debug-версия.
2) Или, в конце концов распечатай значение nSelCount с помощью TRACE. Наверняка дело в нем. Т.е. он либо 0, либо -1. 3) Поставь проверку if (nSelCount > 0), т.к. часто попытка выделить 0 байтов именно Out of memory и заканчивается. Добавлено @ 16:05 Причиной того, что iSelCount=-1, может быть неправильный тип листбокса:
-------------------- ... |
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |