Мышь отправляет сообщения, но куда? Откуда их доставать для использования?

93
05 февраля 2022, 10:50

У меня обычный "пустой проект" в VS2019(С++), я нашёл как найти координаты окна и курсора,

POINT mouse;//точка с координатами мыши
while (1)
{//тут я просто определяю координаты куда нажал мышкой относительно окна и пишу это
    GetWindowRect(hwndConsole, &rc);
    GetCursorPos(&mouse);//записываем в точку координаты курсора
    std::cout <<"Position WINDOW   "<< rc.left << "\t" << rc.top << std::endl;
    std::cout << "Position MOUSE   " << mouse.x << "\t" << mouse.y << std::endl;
    std::cout << "Position MOUSE by WINDOW   " << mouse.x - rc.left << "\t" << mouse.y - rc.top << std::endl;
    _getch();
}

но совершенно не понимаю как начать принимать MESSAGE от мыши о её нажатиях и движении. И если я таки начну получать сообщения от неё, то как их лучше обрабатывать, в бесконечном цикле или есть какая-то специальная функция "ждать сообщение от мышки" ? И как я понимаю в отдельном процессе это делать, чтобы в основном делать то, что нужно при нажатиях на кнопки или это происходит как-то автоматически? И ещё, есть ли какие нибудь особенности при работе с консолью?

Answer 1

Работать из консоли с мышью - необычно. Внезапно консоль - это элемент текстового интерфейса, который заточен на работу с символьными данными... Консольные приложения обычно не получают как таковых "MESSAGE", но они могут использовать функцию ReadConsoleInput для получения событий мыши, если включить режим SetConsoleMode(hStdin,ENABLE_MOUSE_INPUT). Фактически да, по принципу "ждать сообщение от мышки". Пример.

Также консольные приложения могут установить глобальный хук на мышь, и тогда они будут получать сообщения о событиях мыши во всех приложениях. Их в этом случае можно обработать с помощью обычного цикла GetMessage/DispatchMessage. Пример работы с хуками

GUI-приложения обычно могут проще взаимодействовать с мышью, обрабатывая сообщения мыши типа WM_MOUSEMOVE в своих окнах.

READ ALSO
Clang ошибка при компиляции reinterpret_cast

Clang ошибка при компиляции reinterpret_cast

При попытке компиляции программы на C++ выдаёт ошибку reinterpret_cast from 'const char *' to

86
C++. Количество слов, имеющих n буквы

C++. Количество слов, имеющих n буквы

Всем привет! Не получается посчитать количество слов имеющих символы 'n' и 'b'Т

226
Лог действий с файлами

Лог действий с файлами

Подскажите как реализовать программу которая будет вести лог действий с файлами (Открытия/закрытия/удаления)Хочу реализовать такой лог:...

88