purebasic.info

PureBasic forum
Текущее время: Чт дек 13, 2018 7:42 am

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: Работа с несколькими окнами
СообщениеДобавлено: Вс авг 05, 2018 7:08 am 
Не в сети
ассистент
Аватар пользователя

Зарегистрирован: Ср июл 18, 2018 12:50 am
Сообщений: 22
Откуда: Россия, Красноярск
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Здравствуйте !!! Возникла проблема обработки событий при работе с несколькими окнами. Как это правильно делается ? Пример:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
OpenWindow(0, 0, 0, 600, 400, "ImageGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ButtonGadget(0,10,10,100,30,"Button 1")
Repeat
  event=WaitWindowEvent()
  GadgetNumber = EventGadget()
  If event=#PB_Event_Gadget
    OpenWindow(1, 100, 100, 400, 300, "ImageGadget2", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    Repeat
      event2=WaitWindowEvent()
    Until Event = #PB_Event_CloseWindow
  EndIf
Until Event = #PB_Event_CloseWindow


По сути, добиться нужно следующего: в главном окне есть кнопка, при нажатии на которую, создается второе окно. Как правильно сообщить машине, какие события и гаджеты относятся к первому окну, а какие ко второму ? А то в моём примере, закрытие окон, например, работает некорректно. Заранее благодарен !


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с несколькими окнами
СообщениеДобавлено: Вс авг 05, 2018 8:53 am 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6412
Благодарил (а): 21 раз.
Поблагодарили: 200 раз.
Пункты репутации: 52
Можно вести сплошную нумерацию окон и гаджетов Enumeration-EndEnumeration, тогда достаточно одного главного цикла в программе, легче добавлять гаджеты и события.
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
 
; Windows
Enumeration
  #Window_0
  #Window_1
 EndEnumeration
 
 ; Gadgets
Enumeration
  #but_0
  #but_1
EndEnumeration
 
OpenWindow(#Window_0, 0, 0, 600, 400, "ImageGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  ButtonGadget(#but_0,10,10,100,30,"Button 1")
Repeat
  Event=WaitWindowEvent()
Select Event
Case #PB_Event_Gadget
               EventGadget = EventGadget()
               EventType = EventType()
               If EventGadget = #but_0
                 OpenWindow(#Window_1, 100, 100, 400, 300, "ImageGadget2", #PB_Window_SystemMenu | #PB_Window_WindowCentered,WindowID(0))
                 ButtonGadget(#but_1,10,10,100,30,"Button 2")
               ElseIf   EventGadget = #but_1
                 MessageRequester("","Butt2")
              EndIf
 Case #PB_Event_CloseWindow
               EventWindow = EventWindow()
               If EventWindow = #Window_1
                  CloseWindow(#Window_1)
               ElseIf EventWindow = #Window_0
                 CloseWindow(#Window_0)
                 Break
              EndIf
             EndSelect              
 ForEver
     
     


_________________
read-only ¯\_(ツ)_/¯


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с несколькими окнами
СообщениеДобавлено: Вс авг 05, 2018 11:30 am 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11336
Благодарил (а): 4 раз.
Поблагодарили: 443 раз.
viewtopic.php?p=89353#p89353

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB