Требуется предложение для пользовательских полос прокрутки MFC - PullRequest
0 голосов
/ 04 июня 2018

Я хочу создать свои собственные полосы прокрутки для специально нарисованного графика, например, это изображение, какой будет лучший путь?

Example

Полосы прокрутки должны:

  • быть видимым только при наведении курсора мыши на него (с постепенным увеличением / уменьшением)
  • Быть частью оси x / y графика, как на рисунке
  • Нет кнопок со стрелками, только большой палец. Тоньше, чем обычные полосы прокрутки

Вы бы предложили:

  1. Создать все с нуля, обработка пейджинга, колесико прокрутки и т. д.

  2. Попробуйте унаследовать CScrollBar и сделать свой собственный рисунок?

Из того, что я прочитал, это не такочень легко настроить полосы прокрутки в MFC, например здесь )

1 Ответ

0 голосов
/ 04 июня 2018

Во-первых, это должны быть элементы управления полосой прокрутки (или другие), а не полосы прокрутки окна (используемые для прокрутки окна).

Во-вторых, утверждение «настроить полосы прокрутки в MFC не очень легко»,только частично верно.MFC - это «тонкая оболочка» Windows API, поэтому вам лучше обратиться к документации элемента управления полосы прокрутки Windows.

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

Итак, вы должны посмотреть наэлемент управления полосы прокрутки Windows, и что он предлагает.Взглянул и увидел несколько вещей.К сожалению, похоже, что нет никакой возможности для рисования владельцем.Вы можете обработать сообщение WM_CTLCOLORSCROLLBAR, но это только позволит вам изменить цвета.

И, согласно документации, только цвет фона.Похоже, что это единственная возможная настройка, кроме сообщения SBM_ENABLE_ARROWS, которое может скрывать стрелки.И никакого эффекта затухания.Если вам этого достаточно, вы можете попробовать полосу прокрутки Windows / MFC, в противном случае попробуйте написать свою собственную.

...