Seite 1 von 1

Eigene TrackBar erstellen?

Verfasst: 15.03.2007 20:31
von Blackskyliner
Hallo ich hab da mal eine Frage, warum sollte ich auch sonst einen Thread eröffnen...

Ich möchte eine eigene Trackbar erstellen, hab jedoch keinen Plan, wie ich dies machen kann. Also ich meine eine RICHTIG eigene so über CreateWindowEx. Ich finde nur den Ansatz nicht, und über Google hab ich auch nichts verwertbares gefunden...

Würd mich über Antworten freuen :)

MFG
Blackskyliner

Verfasst: 15.03.2007 20:40
von edel

Verfasst: 15.03.2007 20:54
von Blackskyliner
Danke, das sieht interessant aus.

Hab schon was gefunden was genau das macht wass ich wollte, aber das iss natürlich noch viel netter :) mal schaun.

Achja und hier das was ich gefunden hab, und was auch funktioniert:

Code: Alles auswählen

If Message = #WM_NOTIFY 
		*CDHeader.NMCUSTOMDRAW = lParam

		If *CDHeader\hdr\hWndFrom = GadgetID(#MainWindow_Trackbar) And *CDHeader\hdr\code = #NM_CUSTOMDRAW
			Select *CDHeader\dwDrawStage
				Case #CDDS_PREPAINT
					ProcedureReturn #CDRF_NOTIFYITEMDRAW
				Case #CDDS_ITEMPREPAINT
					If *CDHeader\dwItemSpec= #TBCD_THUMB
						With *CDHeader
							Rectangle_(\hdc,\rc\left-1,\rc\top-2,\rc\right+2,\rc\bottom-1)
							Rectangle_(\hdc,\rc\left+1,\rc\top,\rc\right,\rc\bottom-3)
						EndWith
						ProcedureReturn #CDRF_SKIPDEFAULT
					EndIf
					
					ProcedureReturn #CDRF_DODEFAULT
			EndSelect
		EndIf 
	EndIf

Verfasst: 15.03.2007 21:01
von ts-soft
>> Also ich meine eine RICHTIG eigene so über CreateWindowEx
Was ist RICHTIG eigene? gemalt?
Ansonsten so:

Code: Alles auswählen

Procedure CreateTrackBar(hWndParend.l, x,y,w,h)
  Protected hWnd.l
  hWnd = CreateWindowEx_(0, "msctls_trackbar32",0,#WS_CHILD|#WS_VISIBLE,x,y,w,h,hWndParend,0,GetModuleHandle_(0),0)
  ProcedureReturn hWnd
EndProcedure

If OpenWindow(0, #PB_Ignore, #PB_Ignore, 640, 50, "Trackbar-Test")
  trackbar = CreateTrackBar(WindowID(0), 10, 10, 620, 30)
  
  While WaitWindowEvent() <> 16 : Wend
EndIf
Macht aber kaum Sinn, gibts in PB schon :mrgreen: