purebasic.info

PureBasic forum
Текущее время: Вт окт 16, 2018 6:50 am

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




Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: Как создать дочернее WS_POPUP окно?
СообщениеДобавлено: Чт май 10, 2018 9:03 pm 
Не в сети
профессор

Зарегистрирован: Чт фев 09, 2017 10:37 am
Сообщений: 201
Благодарил (а): 20 раз.
Поблагодарили: 33 раз.
Пункты репутации: 0
Чтоб понятней, вот код. Я использовал способ так как делал в AutoIt3. Возможно всё проще, но всё же:
1. Дочернее окно должно появится над родительским и запретить к родительскому доступ. Обычно кликая родительское он мигает дочерним, мол закончи (закрой) сначала с этим.
2. Окно с одной кнопкой "Закрыть" в заголовке.
Код:
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
Declare WinHelp()
Define.i hGUI
#WS_POPUP = $80000000
 
hGUI = OpenWindow(#PB_Any, 100, 200, 440, 130, "Родительское", #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered)
If hGUI
 
        ButtonGadget(5, 300, 77, 27, 32, "?")
 
  Repeat
    Event = WaitWindowEvent()
    If Event = #PB_Event_Gadget
      Select EventGadget()
        Case 5 ; ?
                        WinHelp()
      EndSelect
    EndIf
  Until Event = #PB_Event_CloseWindow
EndIf
 
End
 
 
Procedure WinHelp()
        Define Event
       
        hGUI2 = OpenWindow(#PB_Any, 100, 200, 620, 420, "Справка", #PB_Window_SystemMenu | #WS_POPUP , hGUI)
        If hGUI2
;               SetParent_(hGUI2, hGUI)
;               DisableWindow(hGUI, #True)
                EditorGadget(0, 5, 5, 610, 410)
                SetGadgetText(0, "текст справки")
                SetGadgetState(0, 0)
       
                Repeat
                        Event = WaitWindowEvent()
                Until Event = #PB_Event_CloseWindow
 
;               DisableWindow(hGUI, #False)
;               CloseWindow(hGUI2)
        EndIf
EndProcedure



Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Как создать дочернее WS_POPUP окно?
СообщениеДобавлено: Чт май 10, 2018 10:23 pm 
Не в сети
ассистент

Зарегистрирован: Пн фев 19, 2018 8:40 am
Сообщений: 17
Благодарил (а): 2 раз.
Поблагодарили: 0 раз.
Пункты репутации: 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
Declare WinHelp()
Declare SizeWindowHandler()
 
If OpenWindow(0, 100, 200, 440, 130, "Родительское", #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered)
  SendMessage_(WindowID(0),#WM_SETICON,0,ExtractIcon_(0,"Shell32.dll",208))
  ButtonGadget(5, 320, 27, 90, 32, "Окно справки")
  ;
  CreateImageMenu(0, WindowID(0))
  MenuTitle("Файл")  
  MenuItem(1, "Меню", ExtractIcon_(0,"Shell32.dll",2))
  MenuItem(2, "Выход", ExtractIcon_(0,"Shell32.dll",159))
  MenuTitle("Настройки")
  MenuItem(3, "Меню", ExtractIcon_(0,"Shell32.dll",2))
  ;
  CreatePopupImageMenu(1)
  MenuItem(1, "Меню", ExtractIcon_(0,"Shell32.dll",2))  
  OpenSubMenu("Настройки" , ExtractIcon_(0,"Shell32.dll",212))
  MenuItem(3, "Меню", ExtractIcon_(0,"Shell32.dll",2))
  CloseSubMenu()
  MenuItem(2, "Выход", ExtractIcon_(0,"Shell32.dll",159))
  ;
  CreateStatusBar(0, WindowID(0))
  AddStatusBarField(85)
  AddStatusBarField(300)
  AddStatusBarField(56)
  ;
  AddSysTrayIcon(0, WindowID(0), ExtractIcon_(0,"Shell32.dll",208))
  SysTrayIconToolTip(EventGadget(), "Привет, мир")
 
  BindEvent(#PB_Event_SizeWindow, @SizeWindowHandler())
  AddWindowTimer(0, 0, 500)
 
  While #True
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow
        Select GetActiveWindow()
          Case 0
            Break
          Case 1
            CloseWindow(1)
            DisableWindow(0, #False)
            SetActiveWindow(0)
        EndSelect
      Case #PB_Event_SizeWindow
;         Select GetActiveWindow()
;           Case 1
;             ResizeGadget(0,5,5,WindowWidth(1)-10,WindowHeight(1)-10)
;         EndSelect
      Case #PB_Event_Timer
        StatusBarText(0, 2,FormatDate("%hh:%ii:%ss", Date()), #PB_StatusBar_BorderLess|#PB_StatusBar_Center)
      Case #PB_Event_Menu
        Select EventMenu()
          Case 1 : Debug "Menu item 1 clicked!"
          Case 2
            Break
          Case 3 : Debug "Menu item 3 clicked!"
        EndSelect
      Case #PB_Event_SysTray
        Select EventType()
            Case #PB_EventType_RightClick
            DisplayPopupMenu(1, WindowID(0))
        EndSelect
      Case #PB_Event_Gadget
        Select EventGadget()
          Case 0
            Select EventType()
              Case #PB_EventType_Change
                Debug GetGadgetText(0)
            EndSelect
          Case 5 ; ?
            WinHelp()
        EndSelect
    EndSelect
  Wend
 
EndIf
 
End
 
Procedure SizeWindowHandler()
  Select GetActiveWindow()
    Case 1
      ResizeGadget(0,5,5,WindowWidth(1)-10,WindowHeight(1)-10)
  EndSelect
EndProcedure
 
Procedure WinHelp()
  If OpenWindow(1, 100, 200, 620, 420, "Справка", #PB_Window_SystemMenu | #PB_Window_SizeGadget, WindowID(0))
    SendMessage_(WindowID(1),#WM_SETICON,0,ExtractIcon_(0,"Shell32.dll",23))
    SmartWindowRefresh(1, #True)
    WindowBounds(1, 250, 200, #PB_Ignore, #PB_Ignore)
    DisableWindow(0, #True)
    EditorGadget(0, 5, 5, 610, 410)
    SetGadgetText(0, "текст справки")
    SetGadgetState(0, 0)
  EndIf
EndProcedure


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


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

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


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

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


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

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