purebasic.info

PureBasic forum
Текущее время: Чт июл 19, 2018 10:46 am

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




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Горячие клавиши
СообщениеДобавлено: Пн май 21, 2007 4:08 am 
Не в сети
студент

Зарегистрирован: Пн май 21, 2007 3:37 am
Сообщений: 3
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Здрасте! Пишу я прогу (функций пока у нее нет, только GUI), и есть там такая кнопочка, жмем ее и окно проги красиво сворачивается в трей, как сделать чтобы она разворачивалась по нажатию горячей клавиши, т.е. мы ее свернули, работаем там в ворде например, жмем допустим Ctrl+Alt+P и программка разворачивается.

З.Ы. И еще как запретить перетаскивать окно?

_________________
私の頭脳と!!性交してはいけない!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн май 21, 2007 4:50 am 
Не в сети
студент

Зарегистрирован: Пн май 21, 2007 3:37 am
Сообщений: 3
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Вот еще вопрос по той же проге, почти во всех "трэйных" программках, если нажать допустим правой кнопкой на иконку вылазит меню, как такой реализовать? Или как хотябы сделать реакцию иконки на нажатие клавиши (чтобы она "выворачивалась" из трея)?

_________________
私の頭脳と!!性交してはいけない!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн май 21, 2007 5:25 am 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6322
Благодарил (а): 19 раз.
Поблагодарили: 189 раз.
Пункты репутации: 48
Что бы окно нельзя было перемещать - создай окно без бордюра. Тогда о кнопках сворачивания и закрытия должен сам побеспокоиться.

Примеров в SourseCode море - только не ленись искать.

Код:
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
 
If OpenWindow(0, 100, 200, 195, 260, "Test Window",#PB_Window_BorderLess);| #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget)
 
  If CreatePopupMenu(0)
    MenuItem(1, "Restore Window")
    MenuBar()
    MenuItem(2, "Quit")
  EndIf  
   
  MessageRequester("Info", "lass mal verschwinden", 0)
  HideWindow(0, 1)
  LoadImage(0, "..\..\Graphics\Gfx\computer.ico")
  AddSysTrayIcon (1, WindowID(0), ImageID(0)) ; <<--- hier irgend ein 16X16 Icon nehmen
  SysTrayIconToolTip (1, "Rechte Maustaste fьr PopUp")
 
 
  Repeat
 
    EventID.l = WaitWindowEvent()
 
    If EventID = #PB_Event_SysTray ; <<-- PopUp bei click auf rechter Maustaste auf Dein Systray Icon
      If EventType() = #PB_EventType_RightClick
        DisplayPopupMenu(0, WindowID(0))
      EndIf
    EndIf
 
    If EventID = #PB_Event_Menu ; <<-- PopUp Event
      Select EventMenu()
        Case 1 ; Restore
           RemoveSysTrayIcon (1)
           HideWindow(0, 0)
           MessageRequester("Info", "drьck mal OK und dann den Minimize Button am Fenster", 0)
        Case 2 ; Quit
           Quit = 1
      EndSelect
    EndIf
   
    If IsIconic_(WindowID(0)) ;<<-- dasselbe mit dem Minimize Button
      HideWindow(0, 1)
      AddSysTrayIcon (1, WindowID(0), LoadImage(0, "..\..\Graphics\Gfx\computer.ico"))
      SysTrayIconToolTip (1, "Rechte Maustaste fьr PopUp")
    EndIf
 
 
 
    If EventID = #PB_Event_CloseWindow
      Quit = 1
    EndIf
 
  Until Quit = 1
 
EndIf
 



С горячими клавишами просто работает библиотека Droopy

Код:
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
1st Example :
 
 
Procedure hotkey2()
  MessageRequester("hello 2", "this is the seccond functions... that  is all.... please close the main window now..")
EndProcedure
 
 
Procedure hotkey()
  MessageRequester("Hello!", "I got the hotkey message"+Chr(13)+"press again to see a different message")
  HotKeyChangeFunction("test", @hotkey2())
EndProcedure
 
 
HotKeysInit()
OpenWindow(0, 0,0,200, 100,#PB_Window_SystemMenu|#PB_Window_ScreenCentered, "hotkeys test")
HotKeyAdd(WindowID(), #VK_A, @hotkey(), "test", 0,1,1)
 
 
Repeat
  Event = HotkeyWaitWindowEvent()
  If Event = #WM_CLOSE ; aka #PB_Event_CloseWindow
    quit = 1
  EndIf
Until quit = 1
 
 
2nd Example :
Procedure hotkey2()
  MessageRequester("hello 2", "this is the seccond functions... that  is all.... please close the main window now..")
EndProcedure
 
 
Procedure hotkey()
  MessageRequester("Hello!", "I got the hotkey message"+Chr(13)+"press again to see a different message")
  HotKeyChangeFunction("test", @hotkey2())
EndProcedure
 
 
HotKeysInit()
 
 
OpenWindow(0, 0,0,200, 100,#PB_Window_SystemMenu|#PB_Window_ScreenCentered, "hotkeys test")
HotKeyAdd(WindowID(), #VK_A, @hotkey(), "test", 0,1,1)
 
 
Repeat
  Event = HotkeyWindowEvent()
  If Event = #WM_CLOSE ; aka #PB_Event_CloseWindow
    quit = 1
  ElseIf Event = 0
    Delay(20)
  EndIf
 
Until quit = 1
 
 
3nd Example :
 
 
Procedure hotkey2()
  MessageRequester("hello 2", "this is the seccond functions... that  is all.... please close the main window now..")
EndProcedure
 
 
Procedure hotkey()
  MessageRequester("Hello!", "I got the hotkey message"+Chr(13)+"press again to see a different message")
  HotKeyChangeFunction("test", @hotkey2())
EndProcedure
 
 
HotKeysInit()
OpenWindow(0, 0,0,200, 100,#PB_Window_SystemMenu|#PB_Window_ScreenCentered, "hotkeys test")
HotKeyAdd(WindowID(), #VK_A, @hotkey(), "test", 0,1,1)
 
 
 
 
Repeat
  Event = HotkeyCheck(WaitWindowEvent(), EventwParam())
 
 
 
  If Event = #WM_CLOSE ; aka #PB_Event_CloseWindow
    quit = 1
  EndIf
 
 
Until quit = 1



На нашем форуме есть инфа, как её установить и работать.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн май 21, 2007 6:25 am 
Не в сети
студент

Зарегистрирован: Пн май 21, 2007 3:37 am
Сообщений: 3
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
kvitaliy писал(а):
Что бы окно нельзя было перемещать - создай окно без бордюра. Тогда о кнопках сворачивания и закрытия должен сам побеспокоиться.

Ого! А по другому ни как?

За все остальное спасибо

_________________
私の頭脳と!!性交してはいけない!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн май 21, 2007 7:59 am 
Не в сети
BackupUser
Аватар пользователя

Зарегистрирован: Ср ноя 29, 2006 9:29 pm
Сообщений: 1492
Откуда: Москва
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Вот это напиши, окно прилипнет навсегда.
Уж чего-чего, а с окнами решаются все фантазии.

Код:
1
StickyWindow(#Window, State) 



Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт май 22, 2007 12:37 am 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Пн ноя 27, 2006 2:43 pm
Сообщений: 931
Откуда: Санкт-Петербург
Благодарил (а): 1 раз.
Поблагодарили: 12 раз.
Пункты репутации: 15
В друпии (Droopy's Lib) есть такой пример:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
#CheckBox=0
handle=OpenWindow(0,0,0,200,50,"Move me ?",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
CreateGadgetList(WindowID(0))
CheckBoxGadget(#CheckBox,10, 10,250,20,"Checked = Moving Enabled")
SetGadgetState(#CheckBox,#True)
 
 
Repeat
  Event=WaitWindowEvent()
  If Event= #PB_Event_Gadget And EventGadget()=#CheckBox
    WindowsMove(handle,GetGadgetState(#CheckBox))
  EndIf
Until Event=#PB_Event_CloseWindow



поставил галочку - окно можно двигать, убрал - нельзя

для этого нужна всего одна ф-ция:
WindowsMove(#Window ,#False) - окно #Window не двигается
WindowsMove(#Window ,#True) - двигается


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт май 22, 2007 10:31 am 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11206
Благодарил (а): 4 раз.
Поблагодарили: 421 раз.
Цитата:
жмем допустим Ctrl+Alt+P и программка разворачивается
Можно использовать функцию AddKeyboardShortcut(), её описание есть в разделе "window" справки.


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

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11206
Благодарил (а): 4 раз.
Поблагодарили: 421 раз.
Цитата:
вылазит меню, как такой реализовать


Код:
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
 
 
If OpenWindow(0, 100, 150, 300, 100, "PureBasic - SysTray Example", #PB_Window_SystemMenu | #PB_Window_Invisible)
  AddSysTrayIcon(1, WindowID(0),ExtractIcon_(0,GetEnvironmentVariable("windir")+"\system32"+"\SetupAPI.dll",0))
  SysTrayIconToolTip(1, "Icon 1")
  CreatePopupMenu(0)
  MenuItem(1, "Меню1")
  MenuItem(2, "Меню2")
  MenuItem(3, "Меню3")
  MenuItem(4, "Меню4")
  MenuItem(5, "Меню5")
  MenuBar()
  MenuItem(10, "Выход")
  Q = 0
  Repeat
    Event = WaitWindowEvent()
   
    If Event = #PB_Event_SysTray
  If EventType() = #PB_EventType_RightClick ; Обработка правой кнопки мышки
  DisplayPopupMenu(0, WindowID(0)) ; показ вспывающего меню
  EndIf
  EndIf
  If Event = #PB_Event_Menu
 
 
  Select EventMenu()
     Case 1
     MessageRequester("","   Меню 1   ",#PB_MessageRequester_Ok | #MB_ICONINFORMATION )
     Case 2
     MessageRequester("","   Меню 2   ",#PB_MessageRequester_Ok | #MB_ICONINFORMATION )
     Case 3
     MessageRequester("","   Меню 3   ",#PB_MessageRequester_Ok | #MB_ICONINFORMATION )
     Case 4
     MessageRequester("","   Меню 4   ",#PB_MessageRequester_Ok | #MB_ICONINFORMATION )
     Case 5
     MessageRequester("","   Меню 5   ",#PB_MessageRequester_Ok | #MB_ICONINFORMATION )
   
     Case 10
     Q = 1
  EndSelect
     EndIf
   
  Until Event = #PB_Event_CloseWindow Or Q = 1
 
EndIf



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

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


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

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


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

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