purebasic.info

PureBasic forum
Текущее время: Ср ноя 21, 2018 3:43 pm

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




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
 Заголовок сообщения: WindowClose
СообщениеДобавлено: Пн янв 26, 2015 8:10 am 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Вс дек 09, 2012 9:02 pm
Сообщений: 777
Откуда: Дагестан
Благодарил (а): 0 раз.
Поблагодарили: 12 раз.
Пункты репутации: 0
Что скажете удобно ли было бы иметь эти две процедуры? :)
Код:
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
CompilerIf Not Defined(IsCloseWindow, #PB_Function) And
           Not Defined(IsCloseWindow, #PB_Procedure)
  EnableExplicit
 
  CompilerIf Not Defined(PB_Object_Count, #PB_Function) And
             Not Defined(PB_Object_Count, #PB_Procedure) And
             Not Defined(CountWindow, #PB_Function) And
             Not Defined(CountWindow, #PB_Procedure)
    CompilerIf #PB_Compiler_OS = #PB_OS_Windows
      Import ""
      CompilerElse
        ImportC ""
        CompilerEndIf
        PB_Object_Count( Objects )
        PB_Window_Objects.l
      EndImport
    CompilerEndIf
   
    ProcedureDLL IsCloseWindow2( Window = #PB_All)
      If Window ! #PB_All
        If ((Not IsWindow( EventWindow() )) And EventWindow() = Window )
          ProcedureReturn #True
        EndIf
      Else
        If Not PB_Object_Count( PB_Window_Objects )
          ProcedureReturn #True
        EndIf
      EndIf
    EndProcedure
    ProcedureDLL IsCloseWindow( ) ;Returns TRUE is window close
      ProcedureReturn IsCloseWindow2( #PB_All )
    EndProcedure
    Macro IsCloseWindow( Window = #PB_All) ;Returns TRUE is window close
      IsCloseWindow2( Window )  
    EndMacro
   
    DisableExplicit
  CompilerEndIf
 
  ProcedureDLL WindowClose5(Event,MainWindow =-1,Message =-1,Text$="Вы уверены,"+#CRLF$+"что хотите выйти?",Title$="")
    Protected Window = EventWindow()
    If Event = #PB_Event_CloseWindow
      If IsWindow(Window) And Title$ = ""
        Title$ = GetWindowTitle(Window)
      EndIf
     
      If MainWindow = Window :Window = -1 :EndIf
      If MainWindow =-1 And Message =-1 :Message = Window :EndIf
     
      Select Message
        Case Window
          If MessageRequester( Title$, Text$, #PB_MessageRequester_YesNo ) ! #PB_MessageRequester_Yes
            ProcedureReturn #False
          EndIf
      EndSelect
     
      CloseWindow( Window )
      If IsCloseWindow( MainWindow )
        ProcedureReturn #True
      EndIf
    EndIf
  EndProcedure
  ProcedureDLL WindowClose4(Event,MainWindow,Message,Text$)
    ProcedureReturn WindowClose5(Event,MainWindow,Message,Text$,"")
  EndProcedure
  ProcedureDLL WindowClose3(Event,MainWindow,Message)
    ProcedureReturn WindowClose4(Event,MainWindow,Message,"Вы уверены,"+#CRLF$+"что хотите выйти?")
  EndProcedure
  ProcedureDLL WindowClose2(Event,MainWindow)
    ProcedureReturn WindowClose3(Event,MainWindow,#PB_All)
  EndProcedure
  ProcedureDLL WindowClose(Event)
    ProcedureReturn WindowClose2(Event,#PB_Any)
  EndProcedure
  Macro WindowClose(Event,MainWindow =-1,Message =-1,Text="Вы уверены,"+#CRLF$+"что хотите выйти?",Title="") ;Returns TRUE is window close
    WindowClose5(Event,MainWindow,Message,Text,Title)
  EndMacro
 
 
  CompilerIf #PB_Compiler_IsMainFile
    X = 100
   
    For i = 1 To 4
      OpenWindow(i, X, 200, 50, 50, "Window" + Trim(Str(i)),#PB_Window_SystemMenu|#PB_Window_Invisible) :HideWindow(i,0)
      X + 200
    Next
   
    Repeat
      ;Если нужно что то сделать при отказе закрыть программу
      If Event = #PB_Event_CloseWindow
        If Not IsCloseWindow(EventWindow())
          Debug "Отказ"
        EndIf
      EndIf  
     
      Event = WaitWindowEvent( )
      Select Event
        Case #PB_Event_ActivateWindow
          Debug "ActivateWindow "+EventWindow()
      EndSelect
     
    Until WindowClose( Event,4 )
 
    ;Если закрыли программу
    Debug "Выход"
   
  CompilerEndIf



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

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


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

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


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

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