|
0 / 0 / 0
Регистрация: 22.04.2009
Сообщений: 8
|
||||||
ListBox в MFC28.04.2009, 21:57. Показов 9799. Ответов 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 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|