Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 2 сентября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь


<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/




ПРОГРАММИРОВАНИЕ НА C и С++



Слушай, дружище, зачем так мучиться с этим языком С++, ты ведь не Билл Гейтс. Возьми тот же Python и программируй, он кроссплатформенный, под Windows тоже работает. Я сам давно заметил: то что на Си пишешь в страницу кода, на питоне решается в одну-две строки. При том, питон намного проще, я его сам недавно изучил по видеокурсу вот этому. Кстати, автор отлично там объясняет. Буквально день-два и уже будешь писать на нём, чего не скажешь про сложный С++.

Имитация многоразового нажатия мышкой

Автор: Pete Sackett

Описывается простой алгоритм многоразового вызова любой функции до тех пор пока нажата кнопка мыши (проще говоря при посылке сообщения WM_LBUTTONDOWN), либо пока курсор мышки не покинул определённой области.

Вам необходимо переопределить OnLButtonDown, OnMouseMove, OnLButtonUp и OnTimer функции в Вашем классе, наследованном от CWnd. Скорость повторений установлена такой же как на клавиатуре.

void CTestCtrl::OnLButtonDown(UINT nFlags, CPoint point)
 {
     if(PtInRect(&myRect, point))
     {
         DoClickThing();
         SetCapture();
 
         // инициализируем интервал таймера = задержка повтора на клавиатуре
         int setting = 0;
         SystemParametersInfo(SPI_GETKEYBOARDDELAY, 0, &setting, 0);
         int interval = (setting + 1) * 250;
         TimerID = SetTimer(99, interval, NULL);
         TimerStep = 1;
     }
 }
 
 void CTestCtrl::OnMouseMove(UINT nFlags, CPoint point)
 {
     if(TimerStep && !PtInRect(&myRect, point))
     {
         KillTimer(TimerID);
         ReleaseCapture();
         TimerStep = 0;
     }
 }
 
 void CTestCtrl::OnLButtonUp(UINT nFlags, CPoint point)
 {
     if(TimerStep)
     {
         KillTimer(TimerID);
         ReleaseCapture();
         TimerStep = 0;
     }
 }
 
 void CTestCtrl::OnTimer(UINT nIDEvent)
 {
     if(TimerStep == 1)
     {
         KillTimer(TimerID);
 
         // устанавливаем интервал таймера, взятый с клавиатуры
         DWORD setting = 0;
         SystemParametersInfo(SPI_GETKEYBOARDSPEED, 0, &setting, 0);
         int interval = 400 - (setting * 12);
         TimerID = SetTimer(100, interval, NULL);
         TimerStep = 2;
     }
 
     if(TimerStep)
         DoClickThing(); //наша функция, вызываемая многократно
 }
 

 

Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS