Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Перемещение мыши и заголовка окна приложения вместе на С#  (Прочитано 12857 раз)
0 Пользователей и 1 Гость смотрят эту тему.
phabion
Интересующийся

ru
Offline Offline

« : 22-04-2010 17:11 » 

Здравствуйте!

Cледующий код написан на С++
В обработчике события движения курсора мыши по панели (которая на форме находится) добавим следующий текст:
Код:
if (i >= 0)
    {
        if (X - i > 0)
        {
           this->Caption = " " + this->Caption;
        }
        else if (X - i < 0)
        {
           this->Caption = this->Caption.Delete(1,1);
        }
    }
 i = X;
Здесь используется переменная формы i, в которой хранится последнее значение координаты
X курсора мыши. При перемещении курсора вправо, в заголовок окна добавляются пробелы, в результате заголовок как бы перемещается вправо. При перемещении курсора мыши влево из строки заголовка удаляются первые символы, в результате заголовок перемещается влево.

Как решить такую задачу на С#?

Буду благодарен за любой совет!
« Последнее редактирование: 23-04-2010 06:37 от Джон » Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #1 : 22-04-2010 17:20 » 

как обработать сообщения от мыши в C# не знаю, но стало интересно:
1) зачем это делать с заголовком
2) куда подевался вьетнамский акцент
Записан

phabion
Интересующийся

ru
Offline Offline

« Ответ #2 : 23-04-2010 03:33 » 

Зачем это? В прошлом году я занимался С++. У меня такая задача была. Я сейчас сам занимаюсь С#. Просто хочу узнать как это делать в C#.
Кстати "куда подевался вьетнамский акцент" это мне не понятно.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #3 : 23-04-2010 03:38 » 

Кстати "куда подевался вьетнамский акцент" это мне не понятно.

Offtopic:

phabion, так, амнезию в сторону ! https://forum.shelek.ru/index.php/topic,24169.msg233336.html#msg233336

я всё понимяу, но хулиганить просьба не.
Поставлю в угол.

Записан

phabion
Интересующийся

ru
Offline Offline

« Ответ #4 : 23-04-2010 03:54 » new

Я здесь не хулиган Я в Томске учусь на программиста Я учусь на русском языке
Мне лучше здесь обсуждать Вы не хотите чтобы я был тут?? Вы добрые я знаю
Я не хочу стать спамером хулиганом Хочу стать хорошим программистом.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #5 : 23-04-2010 03:59 » 

phabion, да с чего ты взял, что кто то тебя прогоняет, вливайся ) Чем сможем, поможем
Записан

Вад
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #6 : 23-04-2010 06:21 » 

По теме: делегат для этого события - MouseMoveHandler - имеет своим аргументом MouseEventArgs, а у этого аргумента можно узнать текущую позицию мыши. Остаётся сделать следующее:
1. Запомнить позицию, чтобы посчитать смещение при следующем движении
2. При очередном движении рассчитывать это смещение по горизонтали
3. Определиться, какая величина смещения приводит к добавлению/удалению одного символа в заголовке
4. ???
5. PROFIT
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #7 : 23-04-2010 06:36 » 

1. Приведённый в #0 код не делает описываемое действие. Хотя бы потому, что Delete(1,1) - индексация начинается с 0, те в коде удаляется всегда второй символ строки. Да и складывать константную строку с объектом нормальный С++ не очень-то умеет -> " " + this->Caption;.

Но как бы то ни было. Вопрос задан:

Просто хочу узнать как это делать в C#.

В С# это выглядит след. образом:

Код:
if (i >= 0)
    {
        if (X - i > 0)
        {
              this.Text = " " + this.Text;
        }
        else if (X - i < 0)
        {
              this.Text = this.Text.Remove(0, 1);
        }
    }
 i = X;

Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
phabion
Интересующийся

ru
Offline Offline

« Ответ #8 : 24-04-2010 03:16 » 

Как инизиализировать переменные i, X??
Учтоните пожалуйста!
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #9 : 24-04-2010 13:37 » 

phabion, разве не твой код в начале темы приведен?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #10 : 24-04-2010 14:07 » 

Как инизиализировать переменные i, X??

А как они инициаллизировались в С++? Ну, в общем, как ты это раньше делал?
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines