Обрабатывать перемещение мыши по полосе прокрутки окна (WinAPI) - PullRequest
0 голосов
/ 17 мая 2010

У меня есть окно со стилями полосы прокрутки, поэтому у него есть собственные полосы прокрутки. Я хочу, чтобы что-то происходило, когда мышь наводится на полосы прокрутки, но обработка движения окна не дает цели. Как я могу обработать событие mousemove полосы прокрутки?

Спасибо

Ответы [ 2 ]

1 голос
/ 17 мая 2010

В Win32 API полосы прокрутки не имеют «события mousemove».Единственное сообщение, которое вы получаете от вертикальной полосы прокрутки: WM_VSCROLL.

Если вы хотите, чтобы ваши полосы прокрутки имели особое поведение, вы должны разделить их на подклассы и переопределить обработку Сообщения мыши .Как сказано в MSDN ( Элементы управления полосой прокрутки в Win32 ):

Если, однако, вы хотите изменить стандартный вид или функцию полосы прокрутки, вы можете использовать подклассполосы прокрутки на вашем окне или создайте автономный элемент управления.

Вы можете найти примеры кода, который делает это, выполнив поиск по "полосе прокрутки подкласса".

Изменить

Что я пытаюсь сделать, это использовать край полосы прокрутки, чтобы изменить размер моего подокна, это возможно?

Полоса прокруткине способ сделать это.Вместо этого определите окно шириной в несколько пикселей, справа от полосы прокрутки (и высотой).Установите курсор для этого окна как курсор «изменения размера» (чтобы пользователь знал, как щелкать и перетаскивать):

resize cursors

Когда это окно получает сообщение WM_LBUTTONDOWN, оно должноначинайте отслеживать мышь, изменяя ее размеры и перерисовывая каждый раз, когда мышь двигается.Когда окно получает WM_LBUTTONUP, оно должно прекратить отслеживание и оставить ваш элемент управления в новом размере.

Вот код , который поможет вам начать работу с функциями отслеживания мыши.Это для рисования линий, но процесс похож.

0 голосов
/ 17 мая 2010

Проверьте, помогает ли перехват WM_NCMOUSEMOVE .

Сообщение WM_NCMOUSEMOVE опубликовано в окно при перемещении курсора в неклиентской зоне окно. Это сообщение отправлено на окно, которое содержит курсор. Если окно захватило мышь, это сообщение не опубликовано.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...