|
0 / 0 / 0
Регистрация: 22.04.2009
Сообщений: 8
|
||||||
ListBox в MFC28.04.2009, 21:57. Показов 9753. Ответов 17
Метки нет (Все метки)
Здравствуйте, Уважаемые Программисты, у меня тут вопросик по Visual C++ 6.0, воюю с ним уже оч долго. У меня в 1 классе (класс имеет имя Adress) имеется переменная, связанная с listbox- m_listbox (control))- я там с ней чудненько работаю,добавляю, удаляю строчки, проблем ноль,но проблема встает,когда я из другого класса хочу добавить в тот ListBox строку. Компилятор ошибок не выдает, но и с переменной явно не работает, то есть, например:
у меня в классе Adress переменная- m_listbox объявлена в public, в другом классе, который является самостоятельным и не наследует ничего от предыдущего, мне нужно добавить строку в этот самый лист бокс, пишу во втором классе следующее :
Спасибо всем, кто сможет хоть какие-нить идейки подкинуть
0
|
||||||
| 28.04.2009, 21:57 | |
|
Ответы с готовыми решениями:
17
ListBox MFC ListBox в MFC Из файла в ListBox (MFC) |
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|||||||||||
| 28.04.2009, 22:13 | |||||||||||
|
Добрый день,
на какой стадии и каким способом у тебя m_listbox связывается с листбоксом, который на форме? Конструктор? После создания объекта:
Проще всего поставить брейкпойинт на строку с AddString и посмотреть с чем связан член класса m_listbox. Раз война с VC++ идет долго, это не должно стать проблемой. Тебе нужно UpdateData вызывать у нужного тебе диалога, а не просто 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
|
|
|
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
|
|
|
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 | |||||||||||
|
Я о чем вообще речь виду. Вот у тебя две строчки:
![]() Думаю, должно быть что-то типа:
0
|
|||||||||||
|
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
|
|
|
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 в самом классе не инициализируется, т.е не связана с контролом окна, вот и не выходит.
А вообще предлагаю сделать вот так
1
|
||||||
|
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
|
|
|
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
|
|
|
0 / 0 / 0
Регистрация: 22.04.2009
Сообщений: 8
|
|
| 30.04.2009, 21:08 [ТС] | |
|
)))) ну простите меня))) что поделаешь))) я пока только учусь программировать))))
а вообще мне на 1ом курсе вдалбливали "истину" : "девушка не может быть программистом")) ну это так) нелепые отмазки)
0
|
|
| 30.04.2009, 21:08 | |
|
Помогаю со студенческими работами здесь
18
Отобразить в ListBox сумму чисел (MFC) При двойном клике по строке ListBox показать окно с возможностью редактирования этой строки (MFC) подключение классов MFC к не MFC Из MFC 2012 в MFC 2005 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
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
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|