Форум программистов, компьютерный форум CyberForum.ru

Курсор - C++

Восстановить пароль Регистрация
 
zheleznyak_oleg
12 / 12 / 1
Регистрация: 03.01.2011
Сообщений: 76
Записей в блоге: 1
20.07.2011, 20:14     Курсор #1
Как получить координаты курсора в консоли
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.07.2011, 20:14     Курсор
Посмотрите здесь:

LOCATE курсор C++
Скрыть курсор в консольном приложении C++
C++ Курсор
C++ Курсор
Курсор и Изображени C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
20.07.2011, 20:22     Курсор #2
GetConsoleScreenBufferInfo()
xAtom
 Аватар для xAtom
910 / 735 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
20.07.2011, 21:28     Курсор #3
Вот набросал примерчик, рисования в консоли, здесь и получение координат и так далее.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <windows.h>
 
 
int main(void) {
 
   HANDLE  _out = GetStdHandle(STD_OUTPUT_HANDLE);
   HANDLE  _in   = GetStdHandle(STD_INPUT_HANDLE);
   DWORD   dr;
   TCHAR    spos[32];
 
   CONSOLE_SCREEN_BUFFER_INFO  info;
   ZeroMemory(&info, sizeof(CONSOLE_SCREEN_BUFFER_INFO));
   GetConsoleScreenBufferInfo(_out, &info);
 
   INPUT_RECORD  rec;
   while(1) {
             ZeroMemory(&rec, sizeof(INPUT_RECORD));
             ReadConsoleInput(_in, &rec, sizeof(INPUT_RECORD), &dr);
             FlushConsoleInputBuffer(_in);
             if(rec.EventType == MOUSE_EVENT) {
                 COORD pos = {
                        rec.Event.MouseEvent.dwMousePosition.X,
                        rec.Event.MouseEvent.dwMousePosition.Y
                 };
                 // если нажата левая кнопка мыши рисуем по координатам
                 if(rec.Event.MouseEvent.dwButtonState == FROM_LEFT_1ST_BUTTON_PRESSED) {
 
                       WriteConsoleOutputCharacter(_out, " ", 1U, pos, &dr);
                       WORD w = 224;
                       WriteConsoleOutputAttribute(_out, &w,  1U, pos, &dr);
                       wsprintf(spos, "X=%d, Y=%d", pos.X, pos.Y);
                       SetConsoleTitle(spos);  // выводим в заголовок  окна позицию курсора
 
                 }
             }
    }
 
   return 0;
}
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
20.07.2011, 21:47     Курсор #4
Хм..., закоментировал строку:
C++
1
FlushConsoleInputBuffer(_in);
запускаю в MSVS кнопкой F5 (отладка) - программа не работает (т.е. работает, только ни чего не происходит). Запускаю комбинацией кнопок ctrl+F5 (запуск без отладки) - все работает.
Чего-то я не понимаю...
Yandex
Объявления
20.07.2011, 21:47     Курсор
Ответ Создать тему
Опции темы

Текущее время: 03:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru