| 
					| Albom | Дата: Четверг, 06.10.2011, 14:27 | Сообщение # 1 |  | Рядовой Группа: Пользователи Сообщений: 2 Статус: Offline | Добрый день! Спасибо за отличную библиотеку, использовал её в одном проекте... Теперь хочу использовать во втором, но нехватает возможностей. Дело в том, что ScrollBarGadget не посылает событие. Установка таймера - не выход... Возможно ли добавить такую возможность или стоит переписать программу с использованием TrackBarGadget?
 
 
 Сообщение отредактировал Albom - Четверг, 06.10.2011, 14:28 |  |  |  |  | 
| 
					| haav | Дата: Четверг, 06.10.2011, 16:56 | Сообщение # 2 |  |  Генералиссимус Группа: Администраторы Сообщений: 1436 Статус: Offline | Quote Добрый день! Спасибо за отличную библиотеку, использовал её в одном проекте... Теперь хочу использовать во втором, но нехватает возможностей. Дело в том, что ScrollBarGadget не посылает событие. Установка таймера - не выход... Возможно ли добавить такую возможность или стоит переписать программу с использованием TrackBarGadget?
 
 Добрый день!  
 Вообще конечно в большинстве случаев вполне подходят таймеры или дополнительный поток, но раз нужно без них то:
 
 Есть в библиотеке способ работать с оконной процедурой обычным образом с помощью SetWindowCallback
 
 В итоге будет полный доступ ко всем частям обработчика событий:
 
 Вот пример определения цвета без включения таймера:
 
 
 Code #Include "window9.bi" Dim Shared As HWND hw
 Dim As Integer ev
 hw=OpenWindow("TESTCOLOR",10,10,370,140): CenterWindow(hw)
 ScrollBarGadget(1,10,10,200,20,0,255):SetGadgetColor(1,&hff,1,3) 'R
 ScrollBarGadget(2,10,40,200,20,0,255):SetGadgetColor(2,&hff00,1,3) 'G
 ScrollBarGadget(3,10,70,200,20,0,255):SetGadgetColor(3,&hff0000,1,3)'B
 TextGadget(4,220,10,30,20,Str(GetScrollGadgetPos(1)),SS_CENTER):SetGadgetColor(4,0,&hff,2) 'R
 TextGadget(5,220,40,30,20,Str(GetScrollGadgetPos(2)),SS_CENTER):SetGadgetColor(5,0,&hff00,2) 'G
 TextGadget(6,220,70,30,20,Str(GetScrollGadgetPos(3)),SS_CENTER):SetGadgetColor(6,0,&hff0000,2) 'B
 TextGadget(7,260,10,80,80):SetGadgetColor(7,0,0,1)
 
 Sub size
 Static As Integer r,g,b
 Dim As Integer selR=GetScrollGadgetPos(1),selG=GetScrollGadgetPos(2),selB=GetScrollGadgetPos(3)
 If r<>selR Or g<>selG Or b<>selB Then
 r=selR : g=selG : b=selB
 SetGadgetText(4,Str(r)):SetGadgetText(5,Str(g)):SetGadgetText(6,Str(b))
 SetGadgetColor(7,BGR(r,g,b),0,1)
 EndIf
 End Sub
 Function windowproc(hwnd As HWND,msg As UINT,wParam As WPARAM,lParam As LPARAM) As Integer
 If msg=WM_HSCROLL Then
 size
 EndIf
 End Function
 SetWindowCallback(@windowproc())
 Do
 ev=WaitEvent
 Loop Until ev=EventClose
 Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 |  |  |  |  | 
| 
					| Albom | Дата: Пятница, 07.10.2011, 17:26 | Сообщение # 3 |  | Рядовой Группа: Пользователи Сообщений: 2 Статус: Offline | Спасибо! Функция SetWindowCallback спасла положение.   |  |  |  |  |