Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/50: Рейтинг темы: голосов - 50, средняя оценка - 4.52
 Аватар для Mashylya
0 / 0 / 0
Регистрация: 22.04.2009
Сообщений: 8

ListBox в MFC

28.04.2009, 21:57. Показов 9753. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, Уважаемые Программисты, у меня тут вопросик по Visual C++ 6.0, воюю с ним уже оч долго. У меня в 1 классе (класс имеет имя Adress) имеется переменная, связанная с listbox- m_listbox (control))- я там с ней чудненько работаю,добавляю, удаляю строчки, проблем ноль,но проблема встает,когда я из другого класса хочу добавить в тот ListBox строку. Компилятор ошибок не выдает, но и с переменной явно не работает, то есть, например:
у меня в классе Adress переменная- m_listbox объявлена в public,
в другом классе, который является самостоятельным и не наследует ничего от предыдущего, мне нужно добавить строку в этот самый лист бокс, пишу во втором классе следующее :
C++
1
2
3
4
5
6
7
8
{ ...
 
Adress dialog;
UpdateData(TRUE);
dialog.m_listbox.AddString("1234567"); //никаких действий при этом не происходит(((
UpdateData(FALSE);
 
}
собственно ничего в листбокс не добавляет и ошибок не выдает(((( Помогите, плз, совсем замучилась с этим((((((
Спасибо всем, кто сможет хоть какие-нить идейки подкинуть
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.04.2009, 21:57
Ответы с готовыми решениями:

ListBox MFC
Добрый день.Такой вопрос: имеется лист бокс и символьный массив. Как можно добавить в строку элементы допустим с 1-ой по 3-ю...

ListBox в MFC
Как можно создать колонки в ListBox, чтоб например у меня было 3 строки 1 Вася 685-46-24 2 Петр Васильевич ...

Из файла в ListBox (MFC)
Как из файла занести информацию в Listbox. Пытаюсь уже 3 часа занести, ничего не понимаю... void CMyDialog5::OnBnClickedButton2() ...

17
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
28.04.2009, 22:13
Добрый день,
на какой стадии и каким способом у тебя m_listbox связывается с листбоксом, который на форме? Конструктор?
После создания объекта:
C++
1
Adress dialog;
Как dialog.m_listbox после этого становится связан с элементом окна?

Проще всего поставить брейкпойинт на строку с AddString и посмотреть с чем связан член класса m_listbox. Раз война с VC++ идет долго, это не должно стать проблемой.

Тебе нужно UpdateData вызывать у нужного тебе диалога, а не просто UpdateData. Если я работаю с каким-то диалогом и "нахожусь" не внутри него, то
C++
1
dialog_object.UpdateData(...
А сейчас ты вызываешь его для своего класса, в котором работаешь.

P. S. извиняюсь, если что напутал. давно не работаю c VS
0
Эксперт С++
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
28.04.2009, 22:15
А что, собственно, должно происходить? Все происходит как надо, только ты этого не видишь
У тебя в этом коде dialog - локальная переменная. А окно этого dialog - не существует и поэтому не видно на экране (т.е. объект dialog существует, но никакое окно на экране с ним не сопоставлено и не видимо). Вот если ты после UpdateData(FALSE); вызовешь, например, dialog.DoModal(); - ты увидишь свои изменения. Окно нужно создать и сделать видимым - это и делает сразу DoModal() (можно, конечно, сделать то же самое и иначе, немодально).

Но есть у меня подозрение, что этот код вообще не делает то, чего ты добиваешься..... dialog вообще должен отображать другое окно, нет? Тогда разберись с тем, что такое локальная переменная.
0
 Аватар для Mashylya
0 / 0 / 0
Регистрация: 22.04.2009
Сообщений: 8
28.04.2009, 22:29  [ТС]
Vourhey, m_listbox я создаю через ClassWizard/MemberVariables, там указываю класс Adress, выбираю мой ListBox->AddVariable->category-control,variable Type-CListBox.
Что касается "как dialog.m_listbox после этого становится связан с элементом окна"- я чет не совсем понимаю вопроса) уж простите девушку) сложновато у мя идет программирование, так что прошу сразу без обид, если я что-нить не понимаю или глупые вопросы задаю))))
А еще не подскажите, как мне этот самый брейк поинт установить? я с таким не работала))))) еще раз сорри за, наверное, глуповатый вопрос)
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
28.04.2009, 22:32
Я в сообщении написал про UpdateData у класса. Проверяла?
Ну можно и не брейкпоинт, а пошагово зайти в функцию UpdateData. Посмотри, учавствует ли в апдейте айдишник твоего бокса.

P. S. как это делается описано в статьях по отладке в VC++, здесь долго описывать, да и лень
1
 Аватар для Mashylya
0 / 0 / 0
Регистрация: 22.04.2009
Сообщений: 8
28.04.2009, 22:43  [ТС]
CheshireCat, попробовала прописать dialog.Domodal(); в итоге он все равно ниче нового мне не вывел и строчку не добавил((((
Постараюсь описать еще раз то, что я хочу сделать:
вообщем начну издалека) у меня есть диалоговое окно, в котором находится тот самый злополучный ListBox, с этим диалоговым окном1 у меня связан класс -Adress,
но у меня имеется необходимость вызывать это диалоговое окно1 с listBox из другого диалогового окна2 - с ним у меня связан другой класс-Class2. На этом окне2 есть кнопка, по нажатию которой у меня должна по идее добавляться новая строка в старый лист бокс диалогового окна1) Вот) так понятнее стало, что я хочу сделать?

Добавлено через 2 минуты 16 секунд
Пасип, попробую

Добавлено через 4 минуты 20 секунд
Vourhey, пасипки, попробую)
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
28.04.2009, 22:44
Я о чем вообще речь виду. Вот у тебя две строчки:
C++
1
2
Adress dialog;
UpdateData(TRUE);
У тебя есть объект dialog. А вопрос: UpdateData у тебя для кого вызывается? Посмотри. Не для объекта Dialog это видно
Думаю, должно быть что-то типа:
C++
1
dialog.UpdateData(TRUE);
и так далее.
0
 Аватар для Mashylya
0 / 0 / 0
Регистрация: 22.04.2009
Сообщений: 8
28.04.2009, 22:51  [ТС]
Vourhey, я тока что прописала как ты говорил
dialog.UpdateData(TRUE) итд, он ошибок не выдал, но снова ниче не сделал((( так и недобавил эту строчку((( мне кажется, тут проблема в том, что 2ое диалоговое окошко не воспринимает переменную, объявленную в другом классе.. поэтому и изменения не сохраняет или не вносит... понимаешь, там даже тупо если так я просто из лист бокса попробую уже введенную туда строку вывести из другого окна-снова тоже самое будет..
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
28.04.2009, 22:57
Надеюсь, обе UpdateData вызывала через объект dialog? И первый и второй? В любом случае, ошибка в твоем коде есть. Точнее, две. Ты должна вызывать UpdateData у объекта dialog. В противном случае ты апдейтишь вообще другой объект
Тогда мое предположение, что, все-таки, m_listbox не связан с боксом на окне. Тогда тебе нужно зайти в UpdateData первый и проверить выполнение DDX-функций в классе address.
1
 Аватар для Mashylya
0 / 0 / 0
Регистрация: 22.04.2009
Сообщений: 8
28.04.2009, 23:02  [ТС]
Vourhey, да, все Update вызывала через dialog,причем знаешь, что самое смешное?) вообще это мой курсач и я уже сталкивалась с такой проблемой- мне нужно было изменить значение обычной переменной, находящейся в другом классе, а он мне все время нули возвращал, вместо значения, в итоге эту проблему я решила объявив переменные как external в 1 из модулей, все заработало, моя преподша тогда не могла мне сказать в чем косяк,когда я вызывала через тот самый дайлог.. в итоге щас она меня снова заставила работать с этой передачей из класса в класс((( только тут мне никак не объявить ее как общую для всех((((
лан, буду копаться, спасибо большое за помощь и прости за тупняки)
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
28.04.2009, 23:09
Не надо ничего объявлять как экстернал. Все будет работать. Я много проектов делал в VS. И диалоговые объекты я где только не создавал. Все нормально работает. Если правильно написан код
Так что, проверь как ведет себя апдейт пошагово. если не знаешь как, то нужно почитать про отладку в VS. Очень пригодится в будущем. От этого никуда не уйдешь в большой проекте.
Удачи.
0
Эксперт С++
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
28.04.2009, 23:11
Ошибка, в общем-то, тривиальная... Если хочешь, выложи куда-нить свой код и дай ссылку. Сразу не обещаю, но гляну.... только припиши, куда именно глядеть - если там много букаф, то искать, сама понимаешь, дело труба.....
0
Заблокирован
29.04.2009, 09:37
Да прописать в своём классе переменную CListBox m_list и когда хотим с этим листом чего нить сделать пишем m_list = m_listbox, а потом работать. Я почитал и мне кацца что переменная CListBox в самом классе не инициализируется, т.е не связана с контролом окна, вот и не выходит.
А вообще предлагаю сделать вот так
C++
1
2
3
4
5
6
7
8
9
10
11
class Adress
{
 public :
 void AddListString(CListBox &m_list, CString str);
 //
};
 
void Adress::AddListString(CListBox &m_list, CString str)
{
      m_list.AddString(str);
}
И ноль проблем будет....
1
 Аватар для Mashylya
0 / 0 / 0
Регистрация: 22.04.2009
Сообщений: 8
29.04.2009, 12:35  [ТС]
ВСЕМ БОЛЬШОЕ СПАСИБО ЗА ПОМОЩЬ) Я ТАКИ СДЕЛАЛА) ПРАВДА НЕ ТАК, КАК планировала изначально) я решила не париться с передачей параметров) сделала на той форме еще 1 листбокс и в него просто скопировала содержимое старого лист бокса и добавила новую строку) все это дело передаю из 1го в другой через запись в файл)

Добавлено через 2 минуты 6 секунд
На самом деле очень приятно, что вы мне все так помогаете!) спасибо большое еще раз!!!!!!!
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
29.04.2009, 12:54
Ой, ой, ой...через файл. Это мы винт юзаем, чтобы листбокс заполнить... Какой кошмар
0
 Аватар для Mashylya
0 / 0 / 0
Регистрация: 22.04.2009
Сообщений: 8
29.04.2009, 22:46  [ТС]
ну че ты от девушки хочешь)))))? зато сделала))))
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
29.04.2009, 22:55
Не. Незачет
Какая разница, девушка, или нет. Мы программируем, а не мешки таскаем. Задача не решена
0
 Аватар для Mashylya
0 / 0 / 0
Регистрация: 22.04.2009
Сообщений: 8
30.04.2009, 21:08  [ТС]
)))) ну простите меня))) что поделаешь))) я пока только учусь программировать))))
а вообще мне на 1ом курсе вдалбливали "истину" : "девушка не может быть программистом"))
ну это так) нелепые отмазки)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.04.2009, 21:08
Помогаю со студенческими работами здесь

MFC ListBox сортировка
Всем доброго времени суток!! Подскажите, пожалуйста, как через код мне включить значение сортировки ListBox на true, так же как его...

Отобразить в ListBox сумму чисел (MFC)
В верхней задаче нужно ввести число в едит. потом выбрать радиобаттон с числом и в листбоксе должна отображатся их сумма. Подскажите как...

При двойном клике по строке ListBox показать окно с возможностью редактирования этой строки (MFC)
Здравствуйте, как сделать так что бы при двойном клике по строке listBoxa выбивало окошко с возможностью редактирования этой строки?

подключение классов MFC к не MFC
Как подключить MFC Class From ActiveX Control к не MFC проекту? т.е. пишу обычными винапи функциями, а из этого класса нужны функции...

Из MFC 2012 в MFC 2005
Есть прокт для студии 12, всё хорошо, писал на 8ке в VS 2012 и он отлично работает. Позже понадобилось портировать его для 2005, я это всё...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru