Рисуем по экрану

Добавлено: 14/02/2016 00:40 |  Обновлено: 21/08/2016 03:20 |  Добавил: nick |  Просмотры: 4309 Комментарии: 0
Вводная часть
Пример того, как рисовать по экрану, используя WinAPI.
В предыдущем материале я уже рассказывал как можно скрыть окно консоли, используя WinAPI. Напоминаю, делается это так:
#include <windows.h>
int main () {
    /* Скрываем консоль */
    ShowWindow(FindWindowA("ConsoleWindowClass", NULL), false);
}
В этом материале описывается как рисовать по экрану в ОС Windows. Программа использует консольное приложение, поэтому, чтобы его скрыть можно использовать конструкцию описанную выше.

Итак, для того чтобы начертить линию поверх интерфейса Windows можно использовать следующий код:
#include <iostream>
#include <windows.h>
int main () {
    /* Скрываем консоль */
    ShowWindow(FindWindowA("ConsoleWindowClass", NULL), false);
    POINT ptPrevious;
    POINT pos;
    HDC hDC_Desktop;
    while (true) {
        /* Если нажата средняя кнопка мыши (колесо), то рисуем */
        if (GetAsyncKeyState(VK_MBUTTON)) {
            hDC_Desktop = GetDC(0);
            ptPrevious.x = pos.x;
            ptPrevious.y = pos.y;
            GetCursorPos(&pos);
            HPEN hPen = CreatePen(PS_SOLID, 2, RGB(255, 57, 7));
            SelectObject(hDC_Desktop, hPen);
            /* Устанавливаем позицию начальной точки */
            MoveToEx(hDC_Desktop, ptPrevious.x, ptPrevious.y,NULL);
            LineTo(hDC_Desktop, pos.x, pos.y);
            ReleaseDC(0, hDC_Desktop);
        }
        /* Если нажата кнопка ESC, то выходим из программы */
        if (GetAsyncKeyState(VK_ESCAPE)) { break; }
    }
    return 0;
}
Хочется, однако, отметить, что это больше учебный пример, потому что, если рисовать по объектам, взаимодействующим с пользователем (кнопки, ссылки и т. д.), то линия будет пропадать из-за перерисовки этих объектов при наведении мыши и нажатии на них.

Оставьте свой комментарий

Комментариев нет