Scolle mit der Routine in Windows 7 und wollte unter Windows 10 sie einsetzen.
Und siehe da - Sie funzt nicht unter Windows10'! Warum... ???
Code: Alles auswählen
;- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;- IMAGE SCROLLEN
;- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Funz unter Windows 7 / Windows 10
EnableExplicit
;- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;-- [ScaleDPI]
; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
XIncludeFile "Z:\[Pure@API]\[STORE]\LIBRARY\[ScaleDPI].pbi"
; InitScaleDPI()
;}
; XIncludeFile "Z:\[Pure@API]\[BOOKS]\Container_07\[SCROLL]\LIB\Lib_SCROLL_004.pbi"
; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Enumeration
#SCROLL_ImageGadget
#SCROLL_TrackBar
#SCROLL_AreaGadget
#DRW_SCROLL_Image
#DRW_SCROLL_Image_Neu
#Shortcut_ESC_Scroll
#Present_Shortcut_F12_Minidesk
EndEnumeration
;- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;{ [GLO]
Global Container_07
; ----------------------------------------------
Global SCROLL_Aktiv = 0
; ----------------------------------------------
Global Container_07_Pos_X = 0
Global Container_07_Pos_Y = 0
; ----------------------------------------------
Global Scroll_Zoom_Faktor.f = 0
; ----------------------------------------------
Global Scroll_LeseBild_GraphX.f
Global Scroll_LeseBild_GraphY.f
; ----------------------------------------------
Global SCROLL_Minidesk_Doungle = 0
; ----------------------------------------------
; DplClk_#SCROLL_ImageGadget()
Global *gOldEditProc_29
; ====================================================
Global Reader_BackColor = $000000
; ====================================================
Global Desk_Anzahl
Global Reader_Desktop_X
Global Reader_Desktop_Y
; ====================================================
Global MINIDESKTOP_Mode_X = 1920/3
Global MINIDESKTOP_Mode_Y = 1080/3
; ====================================================
;}
;- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;{ [IMG]
; -----------------------
;=> DE/ENCODER
UsePNGImageDecoder()
UsePNGImageEncoder()
UseJPEGImageDecoder()
UseJPEGImageEncoder()
UseJPEG2000ImageDecoder()
UseJPEG2000ImageEncoder()
UseTGAImageDecoder()
UseTIFFImageDecoder()
;}
;}
;- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;-- [IMG] Hier image rein!
; -----------------------
Global SCROLL_Bild_Image = CatchImage(#DRW_SCROLL_Image, ?SCROLL_Bild_Image)
; -----------------------
DataSection
SCROLL_Bild_Image:
IncludeBinary "Z:\[Pure@API]\[STORE]\PNG\Img_PwdCheck_Vorlage.png"
EndDataSection
;}
;- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;{ [Image To Memory]
Global *ImageMemory = EncodeImage(#DRW_SCROLL_Image,#PB_ImagePlugin_PNG , #PB_Image_FloydSteinberg,24)
Global ImageMemSize = MemorySize(*ImageMemory)
; =============================================================
;}
;- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;-- [PRC_31] S C R O L L
;- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Procedure Scroll_Image_Erstellen()
; ----------------------------
Protected Scroll_LeseBildKopieFormat
; ----------------------------------------------
Protected Scroll_web_x.f
Protected Scroll_web_y.f
; ----------------------------------------------
Protected FSZ_Display_Bild_GraphX$
Protected FSZ_Display_Bild_GraphY$
Protected RightText_Summe$
; ----------------------------------------------
If SCROLL_Aktiv = 1
; ----------------------------
;Scroll_LeseBild_GraphX
;Scroll_LeseBild_GraphY
; -------------------------------
If IsImage(#DRW_SCROLL_Image):FreeImage(#DRW_SCROLL_Image):EndIf
; -------------------------------
CatchImage(#DRW_SCROLL_Image, *ImageMemory, @ImageMemSize)
; ----------------------------
If Scroll_LeseBildKopieFormat = 1
; Horizontales Bild
Scroll_web_x = Scroll_LeseBild_GraphX * Scroll_Zoom_Faktor
Scroll_web_y = Int(Scroll_LeseBild_GraphY * Scroll_Zoom_Faktor)
ElseIf Scroll_LeseBildKopieFormat = 2
; Vertikales Bild
Scroll_web_x = Scroll_LeseBild_GraphX * Scroll_Zoom_Faktor
Scroll_web_y = Int(Scroll_LeseBild_GraphY * Scroll_Zoom_Faktor)
Else
Scroll_web_x = Scroll_LeseBild_GraphX * Scroll_Zoom_Faktor
Scroll_web_y = Int(Scroll_LeseBild_GraphY * Scroll_Zoom_Faktor)
EndIf
; ----------------------------
ResizeGadget(#SCROLL_ImageGadget, #PB_Ignore, #PB_Ignore, Scroll_web_x, Scroll_web_y)
; ----------------------------
ResizeImage(#DRW_SCROLL_Image, Scroll_web_x, Scroll_web_y,#PB_Image_Smooth)
; ----------------------------
SetGadgetAttribute(#SCROLL_AreaGadget, #PB_ScrollArea_InnerWidth, Scroll_web_x)
SetGadgetAttribute(#SCROLL_AreaGadget, #PB_ScrollArea_InnerHeight, Scroll_web_y)
; ----------------------------
SetGadgetState(#SCROLL_ImageGadget,ImageID(#DRW_SCROLL_Image))
; ----------------------------
; FSZ_Display_Bild_GraphX$ = Str( Scroll_web_x)
; FSZ_Display_Bild_GraphY$ = Str( Scroll_web_y)
; RightText_Summe$ = "SCROLL-IMAGE Breite/Höhe = "+FSZ_Display_Bild_GraphX$+" / "+FSZ_Display_Bild_GraphY$+" "
; Fusszeile_Righttext(RightText_Summe$)
; ----------------------------
EndIf
; ----------------------------
EndProcedure
Procedure Scroll_Zooming()
; -------------------------------
; Debug GetGadgetState(#SCROLL_TrackBar)
; -------------------------------
Select GetGadgetState(#SCROLL_TrackBar)
;{ Minus
; -------------------------------
Case 1
Scroll_Zoom_Faktor = 0.27
Scroll_Image_Erstellen()
Case 2
Scroll_Zoom_Faktor = 0.33
Scroll_Image_Erstellen()
Case 3
Scroll_Zoom_Faktor = 0.4
Scroll_Image_Erstellen()
Case 4
Scroll_Zoom_Faktor = 0.48
Scroll_Image_Erstellen()
Case 5
Scroll_Zoom_Faktor = 0.57
Scroll_Image_Erstellen()
Case 6
Scroll_Zoom_Faktor = 0.69
Scroll_Image_Erstellen()
Case 7
Scroll_Zoom_Faktor = 0.83
Scroll_Image_Erstellen()
;}
; -------------------------------
Case 8
Scroll_Zoom_Faktor = 1.0
Scroll_Image_Erstellen()
; -------------------------------
;{ PLUS
Case 9
Scroll_Zoom_Faktor = 1.2
Scroll_Image_Erstellen()
Case 10
Scroll_Zoom_Faktor = 1.44
Scroll_Image_Erstellen()
Case 11
Scroll_Zoom_Faktor = 1.73
Scroll_Image_Erstellen()
Case 12
Scroll_Zoom_Faktor = 2.08
Scroll_Image_Erstellen()
Case 13
Scroll_Zoom_Faktor = 2.5
Scroll_Image_Erstellen()
Case 14
Scroll_Zoom_Faktor = 3.0
Scroll_Image_Erstellen()
Case 15
Scroll_Zoom_Faktor = 3.6
Scroll_Image_Erstellen()
;}
; -------------------------------
EndSelect
; -------------------------------
SetActiveGadget(#SCROLL_TrackBar)
EndProcedure
;}
;- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Procedure SCROLL_End()
; SCROLL BEENDEN
If SCROLL_Aktiv = 1
HideGadget(#SCROLL_TrackBar, 0)
CloseWindow(Container_07)
SCROLL_Aktiv = 0
; TODO
End
; FOCUS AUF
; SetActiveGadget(Zoom_I_Bild)
EndIf
EndProcedure
;- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Procedure DplClk_SCROLL_ImageGadget(hWnd, uMsg, wParam, lParam)
; *gOldEditProc_29 = SetWindowLongPtr_(GadgetID(#SCROLL_ImageGadget), #GWL_WNDPROC, @DplClk_SCROLL_ImageGadget())
Protected Result = CallWindowProc_(*gOldEditProc_29, hWnd, uMsg, wParam, lParam)
Select uMsg
Case #WM_LBUTTONDOWN
;{ MOVE WINDOW STRG + LCLK
If GetAsyncKeyState_(#VK_LCONTROL) & $8000
; Debug "LEFT!"
Debug "STRG + #WM_LBUTTONDOWN"
SendMessage_(WindowID(Container_07),#WM_NCLBUTTONDOWN,#HTCAPTION,1)
Else
Debug "#WM_LBUTTONDOWN"
EndIf
;}
Case #WM_MBUTTONDOWN
Debug "#WM_MBUTTONDOWN"
Case #WM_RBUTTONDOWN
SCROLL_End()
EndSelect
ProcedureReturn Result
EndProcedure
;- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Procedure Container_07(Desktop_X,Desktop_Y)
; =============================================================
; =============================================================
Container_07 = OpenWindow(#PB_Any,0,0,Desktop_X,Desktop_Y,"Snipping Test",#PB_Window_BorderLess)
; #PB_Window_Invisible, GetDesktopWindow_()|GetDesktopWindow_()
SetWindowColor(Container_07,Reader_BackColor)
; =============================================================
;{ ScrollAreaGadget
; =============================================================
ScrollAreaGadget(#SCROLL_AreaGadget, 0, 0, Desktop_X,Desktop_Y, Scroll_LeseBild_GraphX, Scroll_LeseBild_GraphY, 0, #PB_ScrollArea_Single|#PB_ScrollArea_Center)
SetGadgetColor(#SCROLL_AreaGadget, #PB_Gadget_BackColor, Reader_BackColor)
; =============================================================
ImageGadget(#SCROLL_ImageGadget, 0, 0, Scroll_LeseBild_GraphX, Scroll_LeseBild_GraphY, ImageID(#DRW_SCROLL_Image))
HideGadget(#SCROLL_ImageGadget,0)
; =============================================================
TrackBarGadget(#SCROLL_TrackBar, 0, 0 , WindowWidth(Container_07), 30, 1, 15); WindowID(#Window)
SetGadgetState(#SCROLL_TrackBar,8)
; =============================================================
CloseGadgetList()
; =============================================================
;{ [99] CALLBACK
*gOldEditProc_29 = SetWindowLongPtr_(GadgetID(#SCROLL_ImageGadget), #GWL_WNDPROC, @DplClk_SCROLL_ImageGadget())
;}
; =============================================================
;{ Shortcut
AddKeyboardShortcut(Container_07, #PB_Shortcut_F12, #Present_Shortcut_F12_Minidesk)
AddKeyboardShortcut(Container_07, #PB_Shortcut_Escape, #Shortcut_ESC_Scroll)
;}
; =============================================================
;}
; =============================================================
Scroll_Zoom_Faktor = 1.0
; =============================================================
HideGadget(#SCROLL_TrackBar, 1)
; =============================================================
SetActiveGadget(#SCROLL_TrackBar)
; =============================================================
SCROLL_Aktiv = 1
; =============================================================
EndProcedure
;- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Procedure SCROLL_Start()
; =============================================================
Desk_Anzahl = ExamineDesktops() -1
; ----------------------------------------
; Reader_Desktop_X = DesktopWidth(Desk_Anzahl)
; Reader_Desktop_Y = DesktopHeight(Desk_Anzahl)
; ----------------------------------------
Reader_Desktop_X = 668
Reader_Desktop_Y = 736
; =============================================================
Scroll_LeseBild_GraphX = ImageWidth(#DRW_SCROLL_Image)
Scroll_LeseBild_GraphY = ImageHeight(#DRW_SCROLL_Image)
; =============================================================
; ScrollBild Inserat Fenster
Container_07(Reader_Desktop_X,Reader_Desktop_Y)
; =============================================================
EndProcedure
;- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Procedure Event_Scroll(EEventID)
; ---------------------------------------
Static Key.l
; ---------------------------------------
Select EEventID
Case #PB_Event_CloseWindow
Case #PB_Event_SizeWindow
SCROLL_End()
Case #PB_Event_Gadget
;{ GADGET
Select EventGadget()
Case #SCROLL_AreaGadget
;{ ; debug "#SCROLL_TrackBar"
HideGadget(#SCROLL_ImageGadget,1)
SetActiveGadget(#SCROLL_TrackBar)
HideGadget(#SCROLL_ImageGadget,0)
;}
Case #SCROLL_TrackBar
;{ ; debug "##SCROLL_TrackBarGadget"
HideGadget(#SCROLL_ImageGadget,1)
Scroll_Zooming()
HideGadget(#SCROLL_ImageGadget,0)
;}
EndSelect
;}
Case #PB_Event_Menu
;{ MENUE
Select EventMenu()
Case #Shortcut_ESC_Scroll
;{ ESC TASTEN
; Debug "SCROLL_Aktiv = "+SCROLL_Aktiv
If SCROLL_Aktiv = 1
SCROLL_End()
EndIf
;}
Case #Present_Shortcut_F12_Minidesk
If SCROLL_Minidesk_Doungle = 0
SCROLL_Minidesk_Doungle = 1
CloseWindow(Container_07)
CatchImage(#DRW_SCROLL_Image, ?SCROLL_Bild_Image)
Container_07(MINIDESKTOP_Mode_X,MINIDESKTOP_Mode_Y)
Else
SCROLL_Minidesk_Doungle = 0
CloseWindow(Container_07)
SCROLL_Start()
EndIf
EndSelect
;}
EndSelect
EndProcedure
; ----------------------------------------
;}
;- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;-- [00] RUN
; ********************************
SCROLL_Start()
;}
;- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;-- REPEAT
; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Define FensterNummer, Event
; Define OleObject.IOleInPlaceActiveObject, web.MSG ,wParam, lParam
; --------------------------------------
Repeat
; --------------------------------------
Event = WaitWindowEvent()
FensterNummer.i = EventWindow()
; --------------------------------------
;{ Fenster per Maus
If Event ; = #SCROLL_ImageGadget
If SCROLL_Minidesk_Doungle = 1
SendMessage_(Container_07, #WM_NCLBUTTONDOWN, #HTCAPTION, 0)
; SendMessage_(Container_07, #WM_NCLBUTTONDOWN, #HTCAPTION, 0)
Container_07_Pos_X = WindowX(Container_07)
Container_07_Pos_Y = WindowY(Container_07)
EndIf
EndIf
;}
; --------------------------------------
Select FensterNummer
Case Container_07
Event_Scroll(Event)
; =====================
EndSelect
; +++++++++++++++++++++++++++++++++++++++
; Fenster schliessen
; +++++++++++++++++++++++++++++++++++++++
If Event = #PB_Event_CloseWindow
If FensterNummer = Container_07
Break
EndIf
EndIf
; +++++++++++++++++++++++++++++++++++++++
ForEver
; +++++++++++++++++++++++++++++++++++++++
; Hauptfenster soll geschlossen werden
; +++++++++++++++++++++++++++++++++++++++
; Optionen: Einstellungen sichern
; Container_07_END()
End
; Schliesse Hauptfenster
CloseWindow(Container_07)
End
; +++++++++++++++++++++++++++++++++++++++
;}
; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>