Как сделать курсор мыши невидимым?
От: OlegN  
Дата: 26.04.10 11:38
Оценка:
Ваяю C#,WPF приложение, которое будет использоваться в том числе и на мониторах с тачскрином. В этом случае курсор мыши только мешает. Как его сделать полностью невидимым? Эксперементы с this.Cursor = Cursors.None, Mouse.OverrideCursor = Cursors.None; Mouse.OverrideCursor = null; к успеху не привели.

Спасибо за советы.
wpf
Re: Как сделать курсор мыши невидимым?
От: baranovda Российская Империя  
Дата: 26.04.10 12:21
Оценка:
Здравствуйте, OlegN, Вы писали:

ON>Спасибо за советы.


Форму на весь экран +

[DllImport("user32.dll")]
static extern int ShowCursor(bool value);
Re[2]: Как сделать курсор мыши невидимым?
От: OlegN  
Дата: 26.04.10 14:51
Оценка:
Здравствуйте, baranovda, Вы писали:

B>Форму на весь экран +


B>
B>[DllImport("user32.dll")]
B>static extern int ShowCursor(bool value);
B>


Спасибо. К сожалению не помогает. Курсор остается видимым, превращаясь в Cursors.IBeam.
Даже, если я перед ShowCursor(false); вставляю:
            this.Cursor = Cursors.None;
            Mouse.OverrideCursor = Cursors.None;
Re[3]: Как сделать курсор мыши невидимым?
От: muse Россия  
Дата: 26.04.10 19:47
Оценка: 1 (1) +1
Здравствуйте, OlegN, Вы писали:

ON>Спасибо. К сожалению не помогает. Курсор остается видимым, превращаясь в Cursors.IBeam.


А что мешает назначить курсору пустую картинку? Теоретически, курсор от картинки отличается лишь хранением hit-point'а, указывающего на активную часть курсора. Именно по этой точке определяются координаты курсора, например.
Люблю повеселиться, особенно пожрать
Re: Как сделать курсор мыши невидимым?
От: Gremlin2 http://www.fb2library.net/
Дата: 27.04.10 07:09
Оценка:
Здравствуйте, OlegN, Вы писали:

ON>Ваяю C#,WPF приложение, которое будет использоваться в том числе и на мониторах с тачскрином. В этом случае курсор мыши только мешает. Как его сделать полностью невидимым? Эксперементы с this.Cursor = Cursors.None, Mouse.OverrideCursor = Cursors.None; Mouse.OverrideCursor = null; к успеху не привели.


ON>Спасибо за советы.

А может оставить его в покое? Я за все версии Windows конечно поручиться не могу, но у меня на нетбук'e, при переходе в режим таблетки, Windows 7 сама прячет мышиный курсор.

Но, если очень надо, попробуйте это:

[DllImport("user32.dll", CharSet=CharSet.Auto, ExactSpelling=true)]
public static extern int ShowCursor(bool bShow);
 
while(ShowCursor(false) >= 0);


т.е. каждый вызов ShowCursor увеличивает или уменьшает внутреннюю переменную на единицу. Курсор показывается если она больше или равна 0.
Re[4]: Как сделать курсор мыши невидимым?
От: OlegN  
Дата: 27.04.10 10:00
Оценка:
Здравствуйте, muse, Вы писали:

M>А что мешает назначить курсору пустую картинку?


Ничего, кроме лени и осадочка, что гланды удаляются перректально. Но, если не всплывет другого решения, так и сделааю. В конце концов мне ехать, а не "шашечки".
Re[2]: Как сделать курсор мыши невидимым?
От: OlegN  
Дата: 27.04.10 10:04
Оценка:
Здравствуйте, Gremlin2, Вы писали:

G>А может оставить его в покое? Я за все версии Windows конечно поручиться не могу, но у меня на нетбук'e, при переходе в режим таблетки, Windows 7 сама прячет мышиный курсор.


У меня приложение под XP и переход на семерку пока не предвидется.

G>Но, если очень надо, попробуйте это:


G>
G>[DllImport("user32.dll", CharSet=CharSet.Auto, ExactSpelling=true)]
G>public static extern int ShowCursor(bool bShow);
 
G>while(ShowCursor(false) >= 0);
G>


G>т.е. каждый вызов ShowCursor увеличивает или уменьшает внутреннюю переменную на единицу. Курсор показывается если она больше или равна 0.


Попробовал, не помогает. Специально перепроверил, уже первый вызов ShowCursor(false) возвращает -1.
Re[3]: Как сделать курсор мыши невидимым?
От: Gremlin2 http://www.fb2library.net/
Дата: 27.04.10 10:31
Оценка:
Здравствуйте, OlegN, Вы писали:

ON>Здравствуйте, Gremlin2, Вы писали:


G>>А может оставить его в покое? Я за все версии Windows конечно поручиться не могу, но у меня на нетбук'e, при переходе в режим таблетки, Windows 7 сама прячет мышиный курсор.


ON>У меня приложение под XP и переход на семерку пока не предвидется.


G>>Но, если очень надо, попробуйте это:


G>>
G>>[DllImport("user32.dll", CharSet=CharSet.Auto, ExactSpelling=true)]
G>>public static extern int ShowCursor(bool bShow);
 
G>>while(ShowCursor(false) >= 0);
G>>


G>>т.е. каждый вызов ShowCursor увеличивает или уменьшает внутреннюю переменную на единицу. Курсор показывается если она больше или равна 0.


ON>Попробовал, не помогает. Специально перепроверил, уже первый вызов ShowCursor(false) возвращает -1.

Что-то у меня закрались сомнения. Специально полез проверять. И так следующий кусок кода:

    public partial class Window1 : Window
    {
        [DllImport("user32.dll", CharSet=CharSet.Auto, ExactSpelling=true)]
        public static extern int ShowCursor(bool bShow);

        public Window1()
        {
            InitializeComponent();
            ShowCursor(false);
        }
    }


прилежно прячет курсор. (Система Windows XP SP2, Framework 3.5 SP1, VS2008).

p. s. Функция ShowCursor включает/выключает курсор только для окна приложения (это я так, на всякий случай )
Re: Как сделать курсор мыши невидимым?
От: Gonzy  
Дата: 27.04.10 10:45
Оценка:
Здравствуйте, OlegN, Вы писали:

ON>Ваяю C#,WPF приложение, которое будет использоваться в том числе и на мониторах с тачскрином. В этом случае курсор мыши только мешает. Как его сделать полностью невидимым? Эксперементы с this.Cursor = Cursors.None, Mouse.OverrideCursor = Cursors.None; Mouse.OverrideCursor = null; к успеху не привели.


А что не так с this.Cursor = Cursors.None?
Re[4]: Как сделать курсор мыши невидимым?
От: OlegN  
Дата: 27.04.10 11:07
Оценка:
Здравствуйте, Gremlin2, Вы писали:

G>Что-то у меня закрались сомнения. Специально полез проверять. И так следующий кусок кода:


G>
G>    public partial class Window1 : Window
G>    {
G>        [DllImport("user32.dll", CharSet=CharSet.Auto, ExactSpelling=true)]
G>        public static extern int ShowCursor(bool bShow);

G>        public Window1()
G>        {
G>            InitializeComponent();
G>            ShowCursor(false);
G>        }
G>    }
G>


G>прилежно прячет курсор. (Система Windows XP SP2, Framework 3.5 SP1, VS2008).


Спасибо за помощь. У меня идентичное окружение (Система Windows XP SP2, Framework 3.5 SP1, VS2008) и я создал тестовое приложение с Вашим кодом. Но упорно вижу на экране в окне приложения курсор IBeam. Запускаю тот же код на еще одном компе с семеркой — курсор исчезает. Попробую переформулировать проблему:

Что посмотреть / проверить в настройках системы, чтобы избавиться от этого феномена?
Re[2]: Как сделать курсор мыши невидимым?
От: OlegN  
Дата: 27.04.10 11:20
Оценка:
Здравствуйте, Gonzy, Вы писали:

G>Здравствуйте, OlegN, Вы писали:


G>А что не так с this.Cursor = Cursors.None?


Курсор не исчезает, а превращается в Сursors.IBeam

Я уже в другой ветке переформулировал проблему:

Что посмотреть / проверить в настройках системы, чтобы избавиться от этого феномена?
Re[3]: Как сделать курсор мыши невидимым?
От: Gonzy  
Дата: 27.04.10 11:28
Оценка:
Здравствуйте, OlegN, Вы писали:

G>>А что не так с this.Cursor = Cursors.None?


ON>Курсор не исчезает, а превращается в Сursors.IBeam

ON>Что посмотреть / проверить в настройках системы, чтобы избавиться от этого феномена?

Он становится IBeam везде или только над текстбоксами? Возможно, конкретные элементы интерфейса устанавливают свой курсор (типа как текстбоксы), независимо от настроек курсора окна.
Re[4]: Как сделать курсор мыши невидимым?
От: OlegN  
Дата: 27.04.10 11:35
Оценка:
Здравствуйте, Gonzy, Вы писали:

G>Здравствуйте, OlegN, Вы писали:


G>>>А что не так с this.Cursor = Cursors.None?


ON>>Курсор не исчезает, а превращается в Сursors.IBeam

ON>>Что посмотреть / проверить в настройках системы, чтобы избавиться от этого феномена?

G>Он становится IBeam везде или только над текстбоксами? Возможно, конкретные элементы интерфейса устанавливают свой курсор (типа как текстбоксы), независимо от настроек курсора окна.


Везде. Даже в тестовом приложении из одного "пустого" окна. Посмотрите мой диалог с gremlin2.
Re[5]: Как сделать курсор мыши невидимым?
От: baranovda Российская Империя  
Дата: 27.04.10 11:46
Оценка: 1 (1)
Здравствуйте, OlegN, Вы писали:

ON>Везде. Даже в тестовом приложении из одного "пустого" окна. Посмотрите мой диалог с gremlin2.


Операционка какая? XP SP3/WinForms/WPF — после вызова ShowCursor(false) никаких Beam-ов не наблюдается, курсор невидим для всех контролов формы.
Re[6]: Как сделать курсор мыши невидимым?
От: OlegN  
Дата: 27.04.10 12:37
Оценка:
Здравствуйте, baranovda, Вы писали:

B>Здравствуйте, OlegN, Вы писали:


ON>>Везде. Даже в тестовом приложении из одного "пустого" окна. Посмотрите мой диалог с gremlin2.


B>Операционка какая? XP SP3/WinForms/WPF — после вызова ShowCursor(false) никаких Beam-ов не наблюдается, курсор невидим для всех контролов формы.


Операционка XP SP2.

У меня гипотеза появилась. Я работаю с компом удаленно. Возможно этот феномен как раз и создает удаленное соединение Windows7, а при прямой работе с компом все заработает. Проверить смогу не раньше четверга.
Re[7]: Как сделать курсор мыши невидимым?
От: Gremlin2 http://www.fb2library.net/
Дата: 27.04.10 12:52
Оценка:
Здравствуйте, OlegN, Вы писали:

ON>Здравствуйте, baranovda, Вы писали:


B>>Здравствуйте, OlegN, Вы писали:


ON>>>Везде. Даже в тестовом приложении из одного "пустого" окна. Посмотрите мой диалог с gremlin2.


B>>Операционка какая? XP SP3/WinForms/WPF — после вызова ShowCursor(false) никаких Beam-ов не наблюдается, курсор невидим для всех контролов формы.


ON>Операционка XP SP2.


ON>У меня гипотеза появилась. Я работаю с компом удаленно. Возможно этот феномен как раз и создает удаленное соединение Windows7, а при прямой работе с компом все заработает. Проверить смогу не раньше четверга.


Проверил на Viste через RDP (клиент WinXP), курсор так-же продолжает пропадать. Так что, затаив дыхание, ждём четверга.
Re: Источник проблем найден - удаленный доступ.
От: OlegN  
Дата: 28.04.10 15:56
Оценка: 4 (1)
Сегодня хоть еще не четверг, но мне удалось протестировать комп в режиме прямого доступа.
Курсор мыши исчезает от простого "Cursors.None", а при удаленном доступе курсор продолжает не исчезать.

Большое спасибо всем принявшим участие в обсуждении — проблема решена.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.