purebasic.info

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

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




Начать новую тему Ответить на тему  [ Сообщений: 18 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Re:
СообщениеДобавлено: Пн сен 16, 2013 7:20 pm 
Не в сети
профессор

Зарегистрирован: Ср янв 14, 2009 4:12 pm
Сообщений: 2002
Благодарил (а): 12 раз.
Поблагодарили: 101 раз.
Пункты репутации: 43
mestnyi писал(а):
и как это будет?

viewtopic.php?f=8&t=797
Для StringGadget'a реализован callback, думаю разберешься

_________________
Всё должно быть просто, настолько просто, насколько возможно, но не проще. (c) Альберт Эйнштейн
Изображение


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Callback для Гаджетов
СообщениеДобавлено: Пн авг 14, 2017 2:25 pm 
Не в сети
профессор

Зарегистрирован: Пт фев 20, 2009 12:57 pm
Сообщений: 1713
Откуда: Алматы
Благодарил (а): 16 раз.
Поблагодарили: 46 раз.
Пункты репутации: 5
Пётр, сто лет назад ты давал замечательную обработку колесика мышки в реальном времени с этим BindGadgetEvent. пользовался сто лет, горя не знал...

но тут понадобился список в ListIconGadget. стоит его выделить и все... вся привязка ломается и колесико мышки больше не крутит скролбары при наведении на них. как выкрутиться?

Код:
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
Enumeration
  #Window
 
  #MAPXScroll
  #MAPYScroll
 
  #Fr04ListIcon
 
  #MAPListCanvas
  #MAPListScroll
 
EndEnumeration
 
 
Global MAPLineFirst.i, MAPLineLast.i, MAPColumnFirst.i, MAPColumnLast.i
Global MAPType.i = 33
Global MAPItemListFirst.i, MAPItemListLast.i ; первый и последний в списке внизу
 
Global SelectEarthType = 0
Global NewEarthX.i, NewEarthY.i
 
Global MAPEditorError = 1
 
Global mousewheelmonitoring ; понадобиться для GEMS треккера
Procedure WinCallback(hWnd, uMsg, WParam, LParam)
 
  Select uMsg
    Case 522        ; mousewheel
      Select mousewheelmonitoring
        Case 3 ; значит это колесо над Х скролом карты
          If WParam > 0 ; up, left
            horizontvalue = GetGadgetState(#MAPXScroll) - 1
            If horizontvalue > 0
              SetGadgetState(#MAPXScroll, horizontvalue)
              MAPColumnFirst = horizontvalue
            EndIf
          Else          ; down, right
            horizontvalue = GetGadgetState(#MAPXScroll) + 1
            If horizontvalue < MAPType - 20
              SetGadgetState(#MAPXScroll, horizontvalue)
              MAPColumnFirst = horizontvalue
            EndIf
          EndIf
        Case 4 ; значит это колесо над Y скролом карты
          If WParam > 0 ; up
            verticalvalue = GetGadgetState(#MAPYScroll) - 1
            If verticalvalue > 0
              SetGadgetState(#MAPYScroll, verticalvalue)
              MAPLineFirst = verticalvalue
            EndIf
          Else          ; down
            verticalvalue = GetGadgetState(#MAPYScroll) + 1
            If verticalvalue < MAPType - 17
              SetGadgetState(#MAPYScroll, verticalvalue)
              MAPLineFirst = verticalvalue
            EndIf
          EndIf
        Case 5 ; значит это колесо над листом видов земли
          If WParam > 0 ; up, left
            horizontvalue = GetGadgetState(#MAPListScroll) - 1
            If horizontvalue > 0
              SetGadgetState(#MAPListScroll, horizontvalue)
              MAPItemListFirst = horizontvalue
            EndIf
          Else          ; down, right
            horizontvalue = GetGadgetState(#MAPListScroll) + 1
            If horizontvalue < FullMapIcons - 20
              SetGadgetState(#MAPListScroll, horizontvalue)
              MAPItemListFirst = horizontvalue
            EndIf
          EndIf
      EndSelect
  EndSelect
 
  ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
 
Procedure MAPYScroll()
 
  If MAPLineFirst <> GetGadgetState(#MAPYScroll)
    MAPLineFirst = GetGadgetState(#MAPYScroll)
  EndIf
 
EndProcedure
Procedure MAPXScroll()
 
  If MAPColumnFirst <> GetGadgetState(#MAPXScroll)
    MAPColumnFirst = GetGadgetState(#MAPXScroll)
  EndIf
 
EndProcedure
 
Procedure MAPListScroll()
 
  If MAPItemListFirst <> GetGadgetState(#MAPListScroll)
    MAPItemListFirst = GetGadgetState(#MAPListScroll)
  EndIf
 
EndProcedure
 
 
;}
 
CurrEditor = 5
windowheighy = 680
 
If OpenWindow(#Window, 100, 200, 945, windowheighy, "", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered)
   
  x = 5
  y = 10
 
  ScrollBarGadget(#MAPXScroll, x, y + 576, 672, 20, 1, 32, 21)
 
  ScrollBarGadget(#MAPYScroll, x+672, y, 20, 576, 1, 32, 18, #PB_ScrollBar_Vertical)
 
  x = 710
  y = 5
 
    x + 10 : y + 20
    y + 45
    ListIconGadget(#Fr04ListIcon, x, y, 210, 455, "Map", 90, #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)
   
  MAPItemListFirst = 1
  CanvasGadget(#MAPListCanvas, x, y+600, 672, 32)
  ScrollBarGadget(#MAPListScroll, x, y + 632, 672, 10, 1, 350, 21)
   
    SetWindowCallback(@WinCallback(), #Window)
    BindGadgetEvent(#MAPYScroll, @MAPYScroll())
    BindGadgetEvent(#MAPXScroll, @MAPXScroll())
   
  Repeat
    Event = WaitWindowEvent()
   
    Select Event
      Case #PB_Event_Gadget
        EvGadget = EventGadget()
        Select EvGadget
          Case #Fr04ListIcon
        EndSelect
       
      Case #PB_Event_CloseWindow
        Quit = 1
       
      Case 512 ;{ mouse move
        Select CurrEditor
          Case 5 ; типа это будет мап едитор
            xmouse = WindowMouseX(#Window)
            ymouse = WindowMouseY(#Window)
           
            Select xmouse
              ; мне надо три мониторинга
              Case 5 To 677 ;
                Select ymouse
                  Case 586 To 606
                    mousewheelmonitoring = 3 ; значит это колесо над Х скролом карты
                  Case 610 To 652
                    mousewheelmonitoring = 5 ; значит это колесо над листом видов земли
                  Default
                    mousewheelmonitoring = 0
                EndSelect
               
              Case 675 To 695 ;
                Select ymouse
                  Case 10 To 586
                    mousewheelmonitoring = 4 ; значит это колесо над Y скролом карты
                  Default
                    mousewheelmonitoring = 0
                EndSelect
               
              Default
                mousewheelmonitoring = 0
               
            EndSelect            
           
        EndSelect
        ;}
 
    EndSelect
    Until Quit = 1
 
EndIf



Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Callback для Гаджетов
СообщениеДобавлено: Пн авг 14, 2017 2:27 pm 
Не в сети
профессор

Зарегистрирован: Пт фев 20, 2009 12:57 pm
Сообщений: 1713
Откуда: Алматы
Благодарил (а): 16 раз.
Поблагодарили: 46 раз.
Пункты репутации: 5
хотя сам дурак. добавил SetActiveGadget(#MAPXScroll) когда курсор в координатах прогресс бара. правда это несколько ресурсоемко каждый раз фокусить...


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

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


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

Сейчас этот форум просматривают: Bing [Bot] и гости: 13


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

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