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 |