Hallo _JON_,
vielen Dank für Deine Antwort.
wenn ich unter win7 auf den Desktop geklickt über meine Icons fahre,
erhalte ich einen blauen halbtransparenten Rahmen.
Diese Funktion hätte ich gerne.
momentan benutze ich die Funtion: DrawFocusRect_(...) = Gummiband oder auch InvertRect_(...) = Invers.
Hier nochmal ein funktionierendes Beispiel:
Code: Alles auswählen
EnableExplicit
Define WindowProc_MouseSelect
Define WindowProc_MouseSelectStartX, WindowProc_MouseSelectLastX
Define WindowProc_MouseSelectStartY, WindowProc_MouseSelectLastY
Define WindowProc_MouseSelectRect.RECT
Global Event
Procedure DrawMouseSelector(hWindow)
Protected hDC
Shared WindowProc_MouseSelectStartX, WindowProc_MouseSelectLastX
Shared WindowProc_MouseSelectStartY, WindowProc_MouseSelectLastY
Shared WindowProc_MouseSelectRect.RECT
If WindowProc_MouseSelectStartX > WindowProc_MouseSelectLastX
WindowProc_MouseSelectRect\left = WindowProc_MouseSelectLastX
WindowProc_MouseSelectRect\right = WindowProc_MouseSelectStartX
Else
WindowProc_MouseSelectRect\left = WindowProc_MouseSelectStartX
WindowProc_MouseSelectRect\right = WindowProc_MouseSelectLastX
EndIf
If WindowProc_MouseSelectStartY > WindowProc_MouseSelectLastY
WindowProc_MouseSelectRect\top = WindowProc_MouseSelectLastY
WindowProc_MouseSelectRect\bottom = WindowProc_MouseSelectStartY
Else
WindowProc_MouseSelectRect\top = WindowProc_MouseSelectStartY
WindowProc_MouseSelectRect\bottom = WindowProc_MouseSelectLastY
EndIf
hDC = GetDC_(hWindow)
InvertRect_(hDC,@WindowProc_MouseSelectRect)
;DrawFocusRect_(hDC,@WindowProc_MouseSelectRect)
ReleaseDC_(hWindow,hDC)
EndProcedure
Procedure WindowCallback(hWindow,Msg,wParam,lParam)
Protected winrect.RECT
Shared WindowProc_MouseSelect
Shared WindowProc_MouseSelectStartX, WindowProc_MouseSelectLastX
Shared WindowProc_MouseSelectStartY, WindowProc_MouseSelectLastY
Shared WindowProc_MouseSelectRect.RECT
Select Msg
Case #WM_LBUTTONDOWN
WindowProc_MouseSelect = 1
WindowProc_MouseSelectStartX = lParam&$FFFF
WindowProc_MouseSelectStartY = (lParam>>16)&$FFFF
GetClientRect_(hWindow,winrect.RECT)
MapWindowPoints_(hWindow,0,winrect,2)
Case #WM_MOUSEMOVE
If WindowProc_MouseSelect > 0 And wParam & #MK_LBUTTON
If WindowProc_MouseSelect > 1
DrawMouseSelector(hWindow)
Else
WindowProc_MouseSelect + 1
EndIf
WindowProc_MouseSelectLastX = lParam&$FFFF
WindowProc_MouseSelectLastY = (lParam>>16)&$FFFF
DrawMouseSelector(hWindow)
EndIf
Case #WM_LBUTTONUP
DrawMouseSelector(hWindow)
EndSelect
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
OpenWindow(0, 0, 0, 400, 400, "Rahmen", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
SetWindowCallback(@WindowCallback())
Repeat
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
LG Peter