MaxGui Slider Ticks

BlitzMax Forums/BlitzMax Programming/MaxGui Slider Ticks

I have a slider working fine. However, I am using the SLIDER_TRACKBAR style with a slider range 0 to 100. This means that below the slider I get a solid black line of ticks. Is there any way to remove this?

TIA

yeah I was wondering about this too, is there a windows message that can be sent to the gadget perhaps?

Interestingly the docs show the windows slider with a tick at each end and the pointer in the middle?

Looks like TBS_AUTOTICK will do it:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/trackbar/styles.asp

errm thats how it is now! 0-100 range gives a 100 ticks

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/trackbar/messages/tbm_setticfreq.asp
TBM_SETTICFREQ is what you are looking for

OK, Newbie question. I'd like to use TBS_NOTICK, the question is how?

>OK, Newbie question. I'd like to use TBS_NOTICK, the
>question is how?

Anyone?

you need to use the winapi command SendMessage:


?win32
Const TBS_AUTOTICKS = 1
Const TBS_VERT = 2
Const TBS_TOP = 4
Const TBS_BOTH = 8
Const TBS_NOTICKS = 16
Const TBS_ENABLESELRANGE = 32
Const TBS_FIXEDLENGTH = 64
Const TBS_NOTHUMB = 128
Const TBS_TOOLTIPS = 256

Const TBM_SETTICFREQ = 1044


Extern "Win32"
	Function SendMessageA:Int(Hwnd:Int, Msg:Int, WParam:Int, LParam:Int)="SendMessageA@16"
End Extern
?

Global myWin:TGadget = CreateWindow("MYwin", 0,0,500,500)
	Local mySlider:TGadget = CreateSlider(10,10,480,40,myWin,SLIDER_TRACKBAR|SLIDER_HORIZONTAL)
		SetSliderRange(mySlider,1,100)
	Local btnMarks:TGadget = CreateButton("Show Marks", 10,60,80,25,myWin)
	Local btnNoMarks:TGadget = CreateButton("No Marks", 110,60,80,25,myWin)
	

While True
	WaitEvent 
	Select EventID()
		Case EVENT_WINDOWCLOSE
			End
		Case EVENT_GADGETACTION
			Select EventSource()
				Case btnMarks
					'btnMarks clicked
					SendMessageA(Query(mySlider, 1), TBM_SETTICFREQ, TBS_AUTOTICKS, Null)
				Case btnNoMarks
					'btnNoMarks clicked
					SendMessageA(Query(mySlider, 1), TBM_SETTICFREQ, TBS_NOTHUMB, Null)
					
			End Select
	End Select
Wend


That's great. I can now up the number of ticks on the silder, thanks.

Is there anyway to get rid of the ticks completely?

Apparently the first and last ticks are created automatically when you create an instance of the control. There doesn't appear to be a way to remove them, although you can get a pointer to the tick array, this array does not contain the first or last ones.

Again thanks for the help. In the end I modified the win32slider.cpp to to turn off all ticks for all sliders and rebuild the modules.

RJJ