реклама на сайте
подробности

 
 
> Windows forms, VS2008 C++ где взять ссылку на объект класса главной формы?
Goofy
сообщение Sep 23 2008, 06:09
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 169
Регистрация: 17-09-07
Из: Красноярск
Пользователь №: 30 600



Переписываю интерфейс к внешнему устройству (КОМ порт) на Visual Studio, работаю через windows forms.
Обработка пакетов и входящих сообщений происходит вне класса главной формы.
При прохождении сообщений необходимо помещать пришедшие данные скажем в richtextbox, находящийся в главной форме. Раньше работал на билдере и сейчас не могу понять, как мне обратиться к уже сконструированному элементу формы.

Application::Run(gcnew MainForm() );

тут создаётся форма, но беда (для моего восприятия) в том, что не вижу явного объявления объекта главной формы, соответственно как обратиться к ней из вне?

Компилятор запрещает глобальное объявление типа MainForm...
А локальное тупо создаст копию главной формы...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
vik0
сообщение Sep 23 2008, 08:02
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 381
Регистрация: 27-07-08
Из: теплые края
Пользователь №: 39 233



Цитата(Goofy @ Sep 23 2008, 08:09) *
тут создаётся форма, но беда (для моего восприятия) в том, что не вижу явного объявления объекта главной формы, соответственно как обратиться к ней из вне?

Можно через System::Windows::Forms::Application::OpenForms
Но лучше так:
Код
ref class MainForm
{
private:
  static MainForm^ instance;
  .....
public:
  MainForm()
  {
    instance = this;
  }

  static property MainForm^ Instance { get { return instance; }; };
  .....
};

void Foo()
{
  MainForm::Instance->bla_bla_bla();
}

PS. Не знаю как в VS2008, но в 2005 работа с WinForms в C++/CLI была сущим адом. Подумайте хорошо, оно вам надо?

Сообщение отредактировал vik0 - Sep 23 2008, 08:05
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd August 2025 - 02:28
Рейтинг@Mail.ru


Страница сгенерированна за 0.01361 секунд с 7
ELECTRONIX ©2004-2016