Форум программистов, компьютерный форум, киберфорум
Наши страницы

Visual C++

Войти
Регистрация
Восстановить пароль
 
hrustash
3 / 3 / 1
Регистрация: 05.04.2013
Сообщений: 42
#1

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

29.08.2013, 01:28. Просмотров 591. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.08.2013, 01:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Видимость членов класса главного окна в дочерних окнах (Visual C++):

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

Как создать 2 дочерних окна програмно - Visual C++
Помогите пожалуйста как мне сделать что бы при запуске программы уже работали 2 фрейма как показано на рисунке. После добавления кода: ...

Вид главного окна приложения MFC - Visual C++
Не большой знаток MFC, однако читаю в интернете инфу возник следующий вопрос. Как в главном окне сделать область со своей менюшкой, то...

Сохранить изменение в объекте главного диалогового окна, после того, как второе модальное окно закрывается - Visual C++
Есть главное диалоговое окно и его класс А, производный от класса CDialog, есть еще одно модальное диалоговое окно (его класс Б, тоже...

Вызов деструкторов членов класса - C++
у меня есть класс поля которого тоже классы...при выходе из конструктора вызывается деструктор для его полей..даже для указателей...что...

Работа с CDialog и изменение членов объекта другого класса - Visual C++
Есть главное диалоговое окно и его класс А, производный от класса CDialog, есть еще одно модальное диалоговое окно (его класс Б, тоже...

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

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

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

типа
C++
1
2
3
4
if(dlg.DoModal()==IDOK)// если нажата кнопка OK
{
 что то делаем 
}
Цитата Сообщение от hrustash Посмотреть сообщение
порылся еще немного в файлах, созданных визардом и нашел в одном из .cpp (который не Dlg) файлов вот такую штуку
все правильно это запустилось приложение и создало главное окно
а оно есть диалог
m_pMainWnd глобальная переменная обращаться можешь из любого места программы
но чтобы достучатся до твоего листбокса
дочерний должен знать как устроен главный диалог
т.е нужно подключить CFinanceslg.h или как он у тебя называется
вот здесь то и кроется засада
запросто можно кросс объявления
1
hrustash
3 / 3 / 1
Регистрация: 05.04.2013
Сообщений: 42
29.08.2013, 22:45  [ТС] #4
ValeryS, спасибо. ранее не использовал возвращаемого значения от функции DoModal, буду знать)
0
29.08.2013, 22:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.08.2013, 22:45
Привет! Вот еще темы с ответами:

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

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

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

Дочерние окна сворачивать в пределах главного окна (Delphi 7) - Delphi
Здравствуйте, подскажите как сделать чтоб дочернее окно при свертывании не уходило на панель задач а оставалось свернутым в приделах...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru