Программа создана для изучения основ программирования с использованием Windows API.
При открытии пользователем программы (*.exe файла) появляется окно с двумя кнопками "Да" и "Нет" и текстом, провоцирующем на нажатие кнопки "Нет". При попытке нажатия на данную кнопку она начинает "бегать" по экрану.
Пользователь не имеет возможности выйти из программы с помощью кнопки "Закрыть". Единственный вариант дальнейших действий - нажатие на кнопку "Да". Далее происходит смена текста и появление кнопки для выхода из программы.
Видео с демонстрацией работы программы.
-
Программа реализована в среде Microsoft Visual Studio 2019. При клонировании репозитория в MS VS запуск программы необходимо осуществлять с помощью WinAPI_joke.sln. После запуска программы в папке WinAPI_joke/Debug будет создан файл WinAPI_joke.exe, работающий отдельно.
-
Файл Source.cpp содержит основную программу: главную функцию, функцию обработки сообщений от окна и функцию перемещения кнопки.
-
Для функционирования программы координаты мыши определяются на экране монитора, далее переводятся в координаты рабочего окна (hwnd - дескриптор рабочего окна).
LPPOINT pPnt = (LPPOINT)malloc(sizeof(*pPnt));
...
GetCursorPos(pPnt);
ScreenToClient(hwnd, pPnt);
- Новая позиция кнопки, при приближении к ней мыши, определяется с помощью подсчета. Скорость, то есть количество пикселей по диагонали при перемещении кнопки, задается константой. Кнопка движется в том же направлении, что и мышь.
int dx = x - xPos;
int dy = y - yPos;
float dxy = sqrt(dx * dx + dy * dy);
int kdx = speedButton * abs(dx) / (int)dxy;
int kdy = speedButton * abs(dy) / (int)dxy;
masButtonPos[0][0] = (dx <= 0) ? masButtonPos[0][0] - kdx : masButtonPos[0][0] + kdx;
masButtonPos[0][1] = (dy <= 0) ? masButtonPos[0][1] - kdy : masButtonPos[0][1] + kdy;