welche funktion ist der blaue auswahlrahmen von win7

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
kapege
Beiträge: 39
Registriert: 28.12.2004 17:35
Computerausstattung: AMD Ryzen 7 3700X 8-Core Processor 3.60 GHz
Windows 10 Pro 64bit
14 GB Ram

PureBasic 6.00 LTS (Windows - x64)
Wohnort: Trostberg

welche funktion ist der blaue auswahlrahmen von win7

Beitrag von kapege »

Hallo liebe PB-Gemeinde,

kann mir bitte jemand sagen mit welcher Funktion ich den blauen auswahlrahmen von win7 mit PB aufrufen kann?
Diese gefällt mir besser als folgende Funktion, die ich bis jetzt nutze.

Code: Alles auswählen

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)
	DrawFocusRect_(hDC,@WindowProc_MouseSelectRect)
  ReleaseDC_(hWindow,hDC)
  
EndProcedure
würde mich auf eine Antwort sehr freuen und wünsche der gesamten Gemeinde
ein schönes Weihnachtsfest

lg Peter
Benutzeravatar
_JON_
Beiträge: 389
Registriert: 30.03.2010 15:24

Re: welche funktion ist der blaue auswahlrahmen von win7

Beitrag von _JON_ »

Meinst Du vielleicht das hier: Button Fokus?

PB unterstützt es leider nicht nativ, aber es lässt sich zumindest optisch nachrüsten :D
PureBasic 5.46 LTS (Windows x86/x64) | windows 10 x64 Oktober failure
Benutzeravatar
kapege
Beiträge: 39
Registriert: 28.12.2004 17:35
Computerausstattung: AMD Ryzen 7 3700X 8-Core Processor 3.60 GHz
Windows 10 Pro 64bit
14 GB Ram

PureBasic 6.00 LTS (Windows - x64)
Wohnort: Trostberg

Re: welche funktion ist der blaue auswahlrahmen von win7

Beitrag von kapege »

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
Antworten