Page 1 of 1

Организация взаимодействия межд

Posted: Fri Jun 19, 2009 9:25 am
by SmileGobo
Схема такая: есть главное окно приложения, и подчиненные окна: окно настроек, или окно результатов запроса на сервер, это соответственно члены класса главного окна. Допустим послали запрос из главного окна на сервер, а результат выводиться в окно результатов. В окне результатов таблица, из таблицы можно проводить сортировку, путем отправки запроса на сервер, а сетевое взаимодействие организовано через член главного окна.

Соответственно возникает проблема отлова евентов окна результатов для главного окна, или вызова процедур главного окна, для передачи данных по сети.

Posted: Fri Jun 19, 2009 12:04 pm
by borr_1
А через глобальные переменные\глобальные функции нельзя? (это в разделе public в хедере потом #include "MainFrame.h" скажем и в коде MainFrame->/*Что там тебе надо*/Grid->И в перед)

Или то же через функцию... Можно еще эвентами, но это, по-моему, лишнее усложнение.

Posted: Fri Jun 19, 2009 12:34 pm
by T-Rex
Вобще не понимаю, каким образом главное окно шлет запрос на сервер? У тебя дочерние окна имеют свои сокеты?

Вынеси логику для взаимодействия с сервером в отдельный класс, все данные, которые получаешь с сервера, храни в нем, а GUI будет просто отображать содержимое. Для класса логики сделай синглтон и все, доступ отовсюду с любых форм.

Posted: Fri Jun 19, 2009 7:35 pm
by SmileGobo
По сетевому взаимодействию:у главного окна есть члены класса wxSocketClient через него и работаем. Нажимаю кнопку в главном окне - соединяюсь,передаю данные, получаю данные, отсоединяюсь. В этом обработчике же события создаю фрейм результатов, отображаю в нем.

А дочерние окна ничего не имеют так как в этом то и загвоздка - не пойму как правильно делать.


Значит подобную схему можно реализовать через глобальные переменные(Сетевое взаимодействие, главное окно, окно результатов). Я правильно понимаю, что из обработчиков событий окон мне нужно будет обращаться в глобальный объект, который отвечает за сетевое взаимодействие, который в свою очередь будет обращаться из своих обработчиков в эти оба окна?

Posted: Fri Jun 19, 2009 8:37 pm
by T-Rex
можно и не глобальный объект. Вот например у тебя в главном окне есть член класса - твой сокет. Ну возьми в дочернем окне тоже сделай член класса - указатель на сокет и после создания присвой этому указателю адрес члена класса из главного окна. и все, сможешь пользовать из дочернего в свое удовольствие

Posted: Fri Jun 19, 2009 8:53 pm
by SmileGobo
Спасибо, попробую так.