Albom | Дата: Четверг, 06.10.2011, 14:27 | Сообщение # 1 |
Рядовой
Группа: Пользователи
Сообщений: 2
Статус: Offline
| Добрый день! Спасибо за отличную библиотеку, использовал её в одном проекте... Теперь хочу использовать во втором, но нехватает возможностей. Дело в том, что ScrollBarGadget не посылает событие. Установка таймера - не выход... Возможно ли добавить такую возможность или стоит переписать программу с использованием TrackBarGadget?
Сообщение отредактировал Albom - Четверг, 06.10.2011, 14:28 |
|
| |
haav | Дата: Четверг, 06.10.2011, 16:56 | Сообщение # 2 |
Генералиссимус
Группа: Администраторы
Сообщений: 1373
Статус: 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 спасла положение.
|
|
| |