Варианты кода - Окно.
Исходный код окна (первый вариант)
Enumeration
#Window_0
EndEnumeration
If OpenWindow(#Window_0, 100, 100, 450, 180, "Заголовок", #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget)
Repeat
A= WaitWindowEvent()
If A=#PB_Event_CloseWindow
Q=1
EndIf
Until Q=1
EndIf
End
#Window_0
EndEnumeration
If OpenWindow(#Window_0, 100, 100, 450, 180, "Заголовок", #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget)
Repeat
A= WaitWindowEvent()
If A=#PB_Event_CloseWindow
Q=1
EndIf
Until Q=1
EndIf
End
Исходный код окна (второй вариант)
SetWindowColor - задет цвет окна.
Repeat - начало главного цикла Repeat-Until.
Event=WaitWindowEvent() - Получаем текущий идентификатор события.
End - Завершение работы.
OpenWindow(1, 100, 100, 450, 180, "Заголовок", #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget)
Repeat
Event=WaitWindowEvent()
Until Event=#PB_Event_CloseWindow
End
Repeat
Event=WaitWindowEvent()
Until Event=#PB_Event_CloseWindow
End
Исходный код окна (третий вариант)
Код сгенерирован визуальным редактором PureFORM
Enumeration
#Window_0
EndEnumeration
Define.l Event, EventWindow, EventGadget, EventType, EventMenu
Procedure OpenWindow_Window_0()
If OpenWindow(#Window_0, 1, 100, 450, 180, "Заголовок",#PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget )
EndIf
EndProcedure
OpenWindow_Window_0()
Repeat
Event = WaitWindowEvent()
Select Event
Case#PB_Event_Gadget
EventGadget = EventGadget()
EventType = EventType()
Case#PB_Event_CloseWindow
EventWindow = EventWindow()
If EventWindow = #Window_0
CloseWindow(#Window_0)
Break
EndIf
EndSelect
ForEver
#Window_0
EndEnumeration
Define.l Event, EventWindow, EventGadget, EventType, EventMenu
Procedure OpenWindow_Window_0()
If OpenWindow(#Window_0, 1, 100, 450, 180, "Заголовок",#PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget )
EndIf
EndProcedure
OpenWindow_Window_0()
Repeat
Event = WaitWindowEvent()
Select Event
Case#PB_Event_Gadget
EventGadget = EventGadget()
EventType = EventType()
Case#PB_Event_CloseWindow
EventWindow = EventWindow()
If EventWindow = #Window_0
CloseWindow(#Window_0)
Break
EndIf
EndSelect
ForEver
При выполнении всех этих трёх примеров получится следующий результат:
Размер exe файла равен 11,5КБ
Открытие нескольких окон
OpenWindow(0,20,20,200,200,"1",#PB_Window_MinimizeGadget)
OpenWindow(1,100,200,100,50,"2",#PB_Window_MinimizeGadget)
OpenWindow(2,300,500,300,80,"3",#PB_Window_MinimizeGadget)
OpenWindow(3,400,200,200,50,"4",#PB_Window_MinimizeGadget)
Repeat
Event=WaitWindowEvent()
Until Event=#PB_Event_CloseWindow
OpenWindow(1,100,200,100,50,"2",#PB_Window_MinimizeGadget)
OpenWindow(2,300,500,300,80,"3",#PB_Window_MinimizeGadget)
OpenWindow(3,400,200,200,50,"4",#PB_Window_MinimizeGadget)
Repeat
Event=WaitWindowEvent()
Until Event=#PB_Event_CloseWindow
Запускаем цикл из 20 окон, закрываем процесс Delay(6000)
For k = 0 To 20
i+10
s+20
d+20
OpenWindow(i, s, d, 300, 200, "Фантом-окно", #PB_Window_SystemMenu)
Next
Delay(6000)
i+10
s+20
d+20
OpenWindow(i, s, d, 300, 200, "Фантом-окно", #PB_Window_SystemMenu)
Next
Delay(6000)
Каждое окно закрываем отдельно
OpenWindow(0,20,20,200,200,"Главное",#PB_Window_MinimizeGadget)
OpenWindow(1,100,200,100,50,"2",#PB_Window_MinimizeGadget)
OpenWindow(2,300,500,300,80,"3",#PB_Window_MinimizeGadget)
OpenWindow(3,400,200,200,50,"4",#PB_Window_MinimizeGadget)
Repeat
Event=WaitWindowEvent()
Window=EventWindow()
If Event=#PB_Event_CloseWindow
CloseWindow(Window)
EndIf
Until Event=#PB_Event_CloseWindow And Window=0
OpenWindow(1,100,200,100,50,"2",#PB_Window_MinimizeGadget)
OpenWindow(2,300,500,300,80,"3",#PB_Window_MinimizeGadget)
OpenWindow(3,400,200,200,50,"4",#PB_Window_MinimizeGadget)
Repeat
Event=WaitWindowEvent()
Window=EventWindow()
If Event=#PB_Event_CloseWindow
CloseWindow(Window)
EndIf
Until Event=#PB_Event_CloseWindow And Window=0
Запуск окна после того, как загрузиться все гаджеты
Используем флаг окна #PB_Window_Invisible
Когда все гаджеты, меню, строка состояния и т. д. созданы, можно отобразить окно с помощью функции HideWindow
; Создаём невидимое окно
OpenWindow(0,20,20,200,200,"1",#PB_Window_MinimizeGadget|#PB_Window_Invisible)
; Тут создаём гаджеты меню, панель инструментов, строку состояния и т. д.
; Отображаем окно
HideWindow(0,0)
Repeat
Event=WaitWindowEvent()
Until Event=#PB_Event_CloseWindow
OpenWindow(0,20,20,200,200,"1",#PB_Window_MinimizeGadget|#PB_Window_Invisible)
; Тут создаём гаджеты меню, панель инструментов, строку состояния и т. д.
; Отображаем окно
HideWindow(0,0)
Repeat
Event=WaitWindowEvent()
Until Event=#PB_Event_CloseWindow
Фантом окно.
Замените команду Break на сообщение MessageRequester(""," Кнопка поломалась!")
w = GetSystemMetrics_(#SM_CXSCREEN)
h = GetSystemMetrics_(#SM_CYSCREEN)
For a = 1 To 100
OpenWindow(a,Random(w-200),Random(h-200),400,100,"Stiv ",#PB_Window_SystemMenu)
Next a
Repeat
Event=WaitWindowEvent()
If event=#PB_Event_CloseWindow
Break ; Прерываем главный цикл
EndIf
ForEver
h = GetSystemMetrics_(#SM_CYSCREEN)
For a = 1 To 100
OpenWindow(a,Random(w-200),Random(h-200),400,100,"Stiv ",#PB_Window_SystemMenu)
Next a
Repeat
Event=WaitWindowEvent()
If event=#PB_Event_CloseWindow
Break ; Прерываем главный цикл
EndIf
ForEver
Перейти на форум http://purebasic.info/phpBB2/viewtopic.php?t=387