Toolbar "Highlight-Effekt" deaktivieren

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
X0r
Beiträge: 2770
Registriert: 15.03.2007 21:47
Kontaktdaten:

Toolbar "Highlight-Effekt" deaktivieren

Beitrag von X0r »

Hallo,
wie kann man den "Highlight-Effekt" bei einer toolbar deaktivieren(Also so wie es bei jaPBe ist)?
Benutzeravatar
cxAlex
Beiträge: 2111
Registriert: 26.06.2008 10:42

Beitrag von cxAlex »

Ich denke das das bei Jabe keine 'echte' Toolbar ist sondern aus Buttons zusammengestoppelt.
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster

Bild

PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Benutzeravatar
X0r
Beiträge: 2770
Registriert: 15.03.2007 21:47
Kontaktdaten:

Beitrag von X0r »

Ja, wahrscheinlich, aber ist das trotzdem irgendwie möglich?
Benutzeravatar
Kiffi
Beiträge: 10715
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

X0r hat geschrieben:Ja, wahrscheinlich, aber ist das trotzdem irgendwie möglich?
möglich, eine 'unechte' Toolbar zu bauen? Falls ja: jaPBe liegt ja auch im
Source-Code vor [1]. Dort kannst Du Dir anschauen, wie GPI / gnozal das
gemacht haben.

[1]: http://freenet-homepage.de/gnozal/jaPBeForPB400.7z

Grüße ... Kiffi
a²+b²=mc²
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

nee, das war doch nicht seine basis-frage...

wenn es ein style-flag dafür gibt, dann wird man das mit ner message setzen/löschen können.
ich würde zielgerichtet in die Beschreibung des Fensterelements "Toolbar" auf der MSDN schauen.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Code: Alles auswählen

#TBN_HOTITEMCHANGE = #TBN_FIRST - 13

OpenWindow(0,0,0,320,240,"void",#PB_Window_SystemMenu | #PB_Window_ScreenCentered)

CreateToolBar(0,WindowID(0))

For i=0 To 10 : ToolBarStandardButton(i,i) : Next

Procedure WindowCallback(hWnd,uMsg,wParam,lParam)
	Select uMsg
		Case #WM_NOTIFY
		*nmh.NMHDR = lParam
		
		Select *nmh\hwndFrom 
			Case ToolBarID(0)
			Select *nmh\code
				Case #TBN_HOTITEMCHANGE
				ProcedureReturn 1
			EndSelect
		EndSelect
	EndSelect
	
	ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure

SetWindowCallback(@WindowCallback())

While WaitWindowEvent() ! #PB_Event_CloseWindow : Wend
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
X0r
Beiträge: 2770
Registriert: 15.03.2007 21:47
Kontaktdaten:

Beitrag von X0r »

Vielen Dank!
Jetzt bin ich der Lösung meines Problems etwas näher gekommen.
Wie ich bekomm ich nun den Highlight-Effekt weg, der beim geklickt-halten auf ein Toolbar-Item entsteht?
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Hier ist eine Lösung die aber nicht ganz perfekt ist. Man sieht nicht das der Button gedrückt wurde. Also das X/Y-Offset plus 1 Pixel nach unten/rechts.

Code: Alles auswählen

#TBN_HOTITEMCHANGE = #TBN_FIRST - 13
#TBSTATE_MARKED = $80

OpenWindow(0,0,0,320,240,"void",#PB_Window_SystemMenu | #PB_Window_ScreenCentered)

CreateToolBar(0,WindowID(0))

SetWindowLong_(ToolBarID(0),#GWL_STYLE,#WS_CHILD | #WS_VISIBLE | #CCS_TOP | #TBSTYLE_CUSTOMERASE)

For i=0 To 10 : ToolBarStandardButton(100 + i,i) : Next

Procedure WindowCallback(hWnd,uMsg,wParam,lParam)
	Select uMsg
		Case #WM_NOTIFY
		*nmh.NMHDR = lParam
		
		If *nmh\hwndFrom = ToolBarID(0)   
			Select *nmh\code
				Case #NM_CUSTOMDRAW         	
				*nmtbc.NMTBCUSTOMDRAW = lParam
				
				If *nmtbc\nmcd\dwDrawStage = #CDDS_ITEMPREPAINT
					SendMessage_(ToolBarID(0),#TB_SETSTATE,*nmtbc\nmcd\dwItemSpec,#TBSTATE_ENABLED)
					ProcedureReturn #CDRF_DODEFAULT
				EndIf
				
				ProcedureReturn #CDRF_NOTIFYITEMDRAW
				
				Case #TBN_HOTITEMCHANGE
				ProcedureReturn #True
			EndSelect
		EndIf
	EndSelect
   
   ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure

SetWindowCallback(@WindowCallback())

While WaitWindowEvent() ! #PB_Event_CloseWindow : Wend
Zuletzt geändert von Fluid Byte am 10.10.2008 02:18, insgesamt 1-mal geändert.
Windows 10 Pro, 64-Bit / Outtakes | Derek
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

jetzt wunder ich mich aber doch...
wenn du ein toolbar willst, bei dem man nicht sieht, wenn die maus drüber ist und wenn was gedrückt wird...
warum nimmst du dann nicht gleich ein image und wertest den click drauf aus?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Kaeru Gaman hat geschrieben:jetzt wunder ich mich aber doch...
wenn du ein toolbar willst, bei dem man nicht sieht, wenn die maus drüber ist und wenn was gedrückt wird...
warum nimmst du dann nicht gleich ein image und wertest den click drauf aus?
Hab' ich von Anfang an gedacht aber es kommt drauf an welche Funktionalitäten der Toolbar er nutzt. Es gibt viele Features die eine Standardlösung nicht bietet wie Buttonlabels, Gruppierung, Dropdownmenu oder Button-Wrapping. Ansonsten geb' ich dir recht das man andernfalls lieber Images benutzen sollte.
Windows 10 Pro, 64-Bit / Outtakes | Derek
Antworten