FreeBasic
Главная
Вход
Регистрация
Воскресенье, 22.12.2024, 08:58Приветствую Вас Гость | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
ScrollBarGadget
AlbomДата: Четверг, 06.10.2011, 14:27 | Сообщение # 1
Рядовой
Группа: Пользователи
Сообщений: 2
Репутация: 0
Статус: Offline
Добрый день! Спасибо за отличную библиотеку, использовал её в одном проекте... Теперь хочу использовать во втором, но нехватает возможностей.
Дело в том, что ScrollBarGadget не посылает событие. Установка таймера - не выход... Возможно ли добавить такую возможность или стоит переписать программу с использованием TrackBarGadget?


Сообщение отредактировал Albom - Четверг, 06.10.2011, 14:28
 
haavДата: Четверг, 06.10.2011, 16:56 | Сообщение # 2
Генералиссимус
Группа: Администраторы
Сообщений: 1373
Репутация: 50
Статус: 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
Репутация: 0
Статус: Offline
Спасибо! Функция SetWindowCallback спасла положение. smile
 
  • Страница 1 из 1
  • 1
Поиск: