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

Это русская секция форума wxWidjets. В этой секции вы можете обсуждать любые вопросы, связанные с wxWidgets на вашем родном языке.
Post Reply
SmileGobo
Earned some good credits
Earned some good credits
Posts: 111
Joined: Wed Jul 30, 2008 8:01 am
Location: Russia/MO
Contact:

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

Post by SmileGobo » Fri Jun 19, 2009 9:25 am

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

Соответственно возникает проблема отлова евентов окна результатов для главного окна, или вызова процедур главного окна, для передачи данных по сети.
win xp sp2; CodeBlocks/mingw/wxWidgets 2.8.9/wxFormBuilder
web-программирование:PHP,js/Ajax

borr_1
Super wx Problem Solver
Super wx Problem Solver
Posts: 362
Joined: Wed Mar 07, 2007 8:10 am
Location: Russia, Shakhty

Post by borr_1 » Fri Jun 19, 2009 12:04 pm

А через глобальные переменные\глобальные функции нельзя? (это в разделе public в хедере потом #include "MainFrame.h" скажем и в коде MainFrame->/*Что там тебе надо*/Grid->И в перед)

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

User avatar
T-Rex
Moderator
Moderator
Posts: 1195
Joined: Sat Oct 23, 2004 9:58 am
Location: Zaporizhzhya, Ukraine
Contact:

Post by T-Rex » Fri Jun 19, 2009 12:34 pm

Вобще не понимаю, каким образом главное окно шлет запрос на сервер? У тебя дочерние окна имеют свои сокеты?

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

SmileGobo
Earned some good credits
Earned some good credits
Posts: 111
Joined: Wed Jul 30, 2008 8:01 am
Location: Russia/MO
Contact:

Post by SmileGobo » Fri Jun 19, 2009 7:35 pm

По сетевому взаимодействию:у главного окна есть члены класса wxSocketClient через него и работаем. Нажимаю кнопку в главном окне - соединяюсь,передаю данные, получаю данные, отсоединяюсь. В этом обработчике же события создаю фрейм результатов, отображаю в нем.

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


Значит подобную схему можно реализовать через глобальные переменные(Сетевое взаимодействие, главное окно, окно результатов). Я правильно понимаю, что из обработчиков событий окон мне нужно будет обращаться в глобальный объект, который отвечает за сетевое взаимодействие, который в свою очередь будет обращаться из своих обработчиков в эти оба окна?
win xp sp2; CodeBlocks/mingw/wxWidgets 2.8.9/wxFormBuilder
web-программирование:PHP,js/Ajax

User avatar
T-Rex
Moderator
Moderator
Posts: 1195
Joined: Sat Oct 23, 2004 9:58 am
Location: Zaporizhzhya, Ukraine
Contact:

Post by T-Rex » Fri Jun 19, 2009 8:37 pm

можно и не глобальный объект. Вот например у тебя в главном окне есть член класса - твой сокет. Ну возьми в дочернем окне тоже сделай член класса - указатель на сокет и после создания присвой этому указателю адрес члена класса из главного окна. и все, сможешь пользовать из дочернего в свое удовольствие

SmileGobo
Earned some good credits
Earned some good credits
Posts: 111
Joined: Wed Jul 30, 2008 8:01 am
Location: Russia/MO
Contact:

Post by SmileGobo » Fri Jun 19, 2009 8:53 pm

Спасибо, попробую так.
win xp sp2; CodeBlocks/mingw/wxWidgets 2.8.9/wxFormBuilder
web-программирование:PHP,js/Ajax

Post Reply