Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
3 / 3 / 3
Регистрация: 05.04.2013
Сообщений: 42

Видимость членов класса главного окна в дочерних окнах

29.08.2013, 01:28. Показов 1248. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, возникла такая проблема: создаю небольшой MFC проект на базе диалога.
В главном окне есть листбокс, ему, соответственно, отведена переменная типа CListCtrl в классе окна
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class CFinanceslg : public CDialogEx
{
// Создание
public:
    CFinanceslg(CWnd* pParent = NULL);  // стандартный конструктор
 
.......
 
public:
    CListCtrl list_charges;     //главный  ----- 
    friend void MainListFulling (CListCtrl&);   //функция для заполнения главного листбокса и только его
    afx_msg void OnBnClickedOk();
    afx_msg void OnBnClickedNewCharge();
};
Далее есть кнопка, при нажатии вызывается дочернее окно, в нем есть свои формы, из которых я получаю некоторую информацию и потом эту информацию нужно вставить в листбокс главного окна по нажатию клавиши ОК дочернего. Вот тут-то и возникла проблема, не знаю как обратиться к переменной листбокса. Она-то паблик, но я полазил по коду и не нашел создания объекта класса CFinanceslg. решил проблему по-корявому, создал указатель и в OnInitDialog-е главного окна присвоил ему адрес своего list_charges.
Но хотелось бы узнать, может есть какое-то адекватное решение

Добавлено через 14 минут
порылся еще немного в файлах, созданных визардом и нашел в одном из .cpp (который не Dlg) файлов вот такую штуку
C++
1
2
CFinanceslg dlg;
m_pMainWnd = &dlg;
как я понял, этот указатель объявлен еще раньше, где-то в файле afxwin.h, но через него все равно не получается обратиться к члену-данному объекта dlg. и этот указатель все равно не виден в .cpp дочернего окна
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.08.2013, 01:28
Ответы с готовыми решениями:

Видимость/невидимость главного окна
Главное окно по нажатию на горячую клавишу должно делаться видимым/невидимым... написал: if(this->Opacity == 0) this->Opacity =...

Как сделать так, чтобы с данными из главного окна можно было работать в других окнах?
Есть у меня допустим 2 окна. Для примера рассмотрим такую ситуацию. В первом окне есть поле ввода и кнопка. Пользователь вводит в это...

Виртуальный режим в дочерних окнах
Для открытия дочернего окна из главного всегда использую следующий код. private void конфигурацияToolStripMenuItem_Click(object sender,...

3
 Аватар для Aloir
225 / 225 / 38
Регистрация: 17.12.2010
Сообщений: 713
29.08.2013, 10:13
передайте в дочернию фомру структуру которая отвечает за информацию которая заполняется на форме. а потом обрабатываете эту структуру

и вообще у вас там что то типа:

C++
1
2
3
4
    CChildDlg *d = new CChildDlg(...);
    int ret = d->DoModal();
    d->m_cListBox; //обращаемся к контролу листбокса на дочерней форме, ну или к любой другой 
    delete d;
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
29.08.2013, 17:52
Цитата Сообщение от hrustash Посмотреть сообщение
Далее есть кнопка, при нажатии вызывается дочернее окно, в нем есть свои формы, из которых я получаю некоторую информацию и потом эту информацию нужно вставить в листбокс главного окна по нажатию клавиши ОК дочернего.
все не так
в главном диалоге когда вызываешь дочерний ты вызываешь DoModal вот от него и танцуй

типа
C++
1
2
3
4
if(dlg.DoModal()==IDOK)// если нажата кнопка OK
{
 что то делаем 
}
Цитата Сообщение от hrustash Посмотреть сообщение
порылся еще немного в файлах, созданных визардом и нашел в одном из .cpp (который не Dlg) файлов вот такую штуку
все правильно это запустилось приложение и создало главное окно
а оно есть диалог
m_pMainWnd глобальная переменная обращаться можешь из любого места программы
но чтобы достучатся до твоего листбокса
дочерний должен знать как устроен главный диалог
т.е нужно подключить CFinanceslg.h или как он у тебя называется
вот здесь то и кроется засада
запросто можно кросс объявления
1
3 / 3 / 3
Регистрация: 05.04.2013
Сообщений: 42
29.08.2013, 22:45  [ТС]
ValeryS, спасибо. ранее не использовал возвращаемого значения от функции DoModal, буду знать)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.08.2013, 22:45
Помогаю со студенческими работами здесь

MDI: MenuStrip: Меню в дочерних окнах
Столкнулся с такой проблемой: необходимо создать MDI приложение. Начал проектировать главное окно + дочернее. Посмотрел пример от...

При смене активного окна всегда включается видимость первой панели.До этого нажатием кнопки видимость была отключена
Такая ситуация. В программе 6 панелей,для навигации между ними использованы кнопки. На каждой кнопке примерно такой код void...

Как мне сослаться на вторичные окна (формы) из главного окна
Мне скинули код.....я пытаюсь коды этих отдельных форм просмотреть в конструкторе.......то есть создав новый проект.......но наткнувшись на...

Как узнать margin-left любого элемента от главного окна окна браузера?
причем не важно какую вложенность имеет элемент сам элемент, т.е. в скольких контейнерах он бы не находился, нужно найти его marginLeft от...

Запуск второго окна перед стартом главного окна
необходимо запустить второе окно до старта основного окна и вызвать основное окно после завершения второго окна


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[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
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru