2009-08-07 3 views
0

Я разрабатываю полноэкранное приложение, которое содержит некоторые анимированные элементы управления Forms (в основном, метки, которые перемещаются).Скрыть курсор WinForms «настойчиво»?

Я хочу, чтобы скрыть курсор после периода бездействия, и я попытался с помощью метода, приведенного в этой теме: Hide mouse cursor after an idle time

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

Мне нужно, чтобы Windows игнорировала все, что происходит с самим дисплеем, и просто слушайте мои вызовы Cursor.Hide() и Cursor.Show(). Я пробовал использовать обычный таймер Threading, но это не сработало - курсор даже не скрывал.

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

Любая помощь очень ценится. Том

ответ

0

Вызов метода таймера не выполняется в потоке, который их создал, поэтому для выполнения вызовов вам необходимо выполнить эти вызовы с помощью вызова в потоке пользовательского интерфейса.

+0

Вот что я делаю - но курсор не скрывает. Я не уверен, почему это так - код выполняется, но ничего не происходит. – Beardy

+0

Извините, я не эксперт по winforms. Удачи, хотя :) –

2

Угадайте, почему бы не включить переключатель, на котором будут обрабатываться все сообщения WM_, связанные с мышью в wndproc, и просто ничего не делать. При выключении, пусть нормальная обработка сообщений мыши WM_ происходит.

+0

Кажется, это путь, но до сих пор у меня смешанные результаты. Я думаю, что это, вероятно, станет ответом, так что спасибо! – Beardy

+0

Сообщения WM_, относящиеся к обработке мыши, фактически не имеют никакого отношения к показу курсора, если вы не имеете в виду WM_SETCURSOR. См. [Здесь] (http://msdn.microsoft.com/en-us/library/ms648379.aspx). –

Смежные вопросы