В Windows это действительно не функция ОС ... это то, что вы сами кодируете.
По сути, вы создаете массив прямоугольников, в которых должны появляться маркеры. Ваша цель здесь двоякая, первая для простого рисования дескрипторов, вторая для передачи вызова PointInRectangle.
Бит вызова PointInRectangle выполняется во время событий MouseMove. По сути, именно здесь вы решаете, исходя из текущего местоположения мыши, какой курсор должен иметь курсор мыши (он же «в каком режиме» находится мышь).
Другие хитрые биты обрабатывают мышь вниз и определяют, пора ли начинать перетаскивание, перемещают ли мышь при перетаскивании и поднимают ли мышь до конца перемещения.
В целом это может быть куча работы. Ох .. и не забывайте, что вам может понадобиться прокрутить панель / окно рисования при перетаскивании возле краев.
В зависимости от того, что вы делаете, вы, возможно, захотите взглянуть на http://www.lassalle.com/. У них есть отличный недорогой инструмент для построения графиков (не диаграмм).