Где ресурс Win32 для курсора мыши для перетаскивания разделителей?

StackOverflow https://stackoverflow.com/questions/47538

  •  09-06-2019
  •  | 
  •  

Вопрос

Я создаю собственный элемент управления/виджет Win32 и хотел бы изменить курсор на горизонтальный символ «разделителя» при наведении курсора на определенную вертикальную линию в элементе управления.ИЕ:Я хочу перетащить эту вертикальную линию (разделитель) влево и вправо (ЗАПАД и ВОСТОК).

Из системных курсоров (OCR_*) единственный курсор, который имеет смысл, — это OCR_SIZEWE.К сожалению, это большой и неуклюжий курсор, который система использует при изменении размера окна.Вместо этого я ищу курсор высотой около 20 пикселей и шириной около 3 или 4 пикселей с двумя маленькими стрелками, указывающими влево и вправо.

Я могу легко нарисовать это и включить в качестве ресурса в свое приложение, но сам курсор настолько распространен, что я хотел быть уверен, что он ничего не упускает.

Например:когда вы используете механизм перетаскивания COM (CLSID_DragDropHelper, IDropTarget и т. д.), вы неявно получаете доступ к значку «перетаскивания» (маленькому квадрату под указателем).Я не видел явной константы OCR_* для этого парня...Аналогично, если я не могу сразу найти этот курсор-разделитель, мне интересно, является ли он частью COM-объекта или чем-то еще в библиотеке win32.

Это было полезно?

Решение

В пользовательском интерфейсе Windows используются всевозможные значки, курсоры и изображения, которые недоступны для стороннего программного обеспечения.Конечно, вы все равно можете загрузить модуль, в котором они находятся, и использовать их, но на самом деле нет никакой гарантии, что ваша программа продолжит работать после обновления/обновления системы.

Включите свои собственные.Последнее, что вам нужно, — это добавить дополнительную зависимость к крошечному курсору.

Другие советы

У меня была именно эта проблема.Когда я снова просмотрел старый код вертикального разделителя, думая, что у меня есть простой ответ, оказалось, что я собрал и загрузил свой собственный ресурс:

SetCursor( LoadCursor( ghInstance, "IDC_SPLITVERT" ));

Я смутно помню, как потратил немало времени и усилий на поиск системного способа сделать это, поэтому (по моему мнению) не существует доступного системного значка для выполнения этой работы, поэтому вам лучше создать свой собственный.

Это один из тех случаев, когда мне хотелось бы ошибиться, поскольку мне бы хотелось, чтобы для этой работы был системный значок.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top