2013年6月3日 星期一

[PowerBuilder] Window 用滑鼠滾輪滾動(非Datawindow)

在Window上使用滑鼠滾輪來移動Scroll Bar(不是Datawindow啦)。
沒想到,找半天找不到屬性可以設定,
到底有沒有地方可以設定對我來說還是個謎。
不知道是不是我眼殘腦殘。



所以用了以下的方法。

在 External Functions 引用 SystemParametersInfo API
FUNCTION Long SystemParametersInfoA(Long uAction, Long uParam, REF Long lpvParam, Long fuWinIni) LIBRARY "user32.dll"

在Window上新增一個 Even ID 為 pbm_other 的Even。
CONSTANT Long WM_MOUSEWHEEL = 522
CONSTANT Long SPI_GETWHEELSCROLLLINES = 104
CONSTANT Long WM_VSCROLL = 277
CONSTANT Long SB_LINEDOWN = 1
CONSTANT Long SB_LINEUP = 0

Long ll_WheelMouseLine
Long ll_lines
Long ll_index

CHOOSE CASE Message.Number
CASE WM_MOUSEWHEEL
 SystemParametersInfoA(SPI_GETWHEELSCROLLLINES, 0, ll_WheelMouseLine, 0)
 
 ll_Lines = IntHigh(wParam) / 120
 
 IF ll_Lines > 0 THEN
  FOR ll_index = 1 TO ll_WheelMouseLine
   Send(Handle(THIS), WM_VSCROLL, SB_LINEUP,0)
  NEXT
 ELSE
  FOR ll_index = 1 TO ll_WheelMouseLine
   Send(Handle(THIS), WM_VSCROLL, SB_LINEDOWN,0)
  NEXT
 END IF
END CHOOSE

沒有留言:

張貼留言