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