2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Рисование в окне консоли
Сообщение25.04.2011, 17:21 
Аватара пользователя


24/11/10
163
Браслав/Минск, Беларусь
Требуется нарисовать в окне консоли квадрат и перемещать его там с помощью мыши. Возможно ли это сделать? И как выбрать стиль окна именно таким?

 Профиль  
                  
 
 Re: Рисование в окне консоли
Сообщение25.04.2011, 17:38 
Заслуженный участник
Аватара пользователя


11/12/05
10059
Компьютерные вопросы лучше задавать на компьютерном форуме - больше вероятность получить ответ.

 Профиль  
                  
 
 Re: Рисование в окне консоли
Сообщение25.04.2011, 17:47 
Заслуженный участник


27/04/09
28128
В Windows возможно, про остальные не знаю. (Например, для Delphi написан модуль Crt (он был стандартным для Pascal), который, кроме совместимости, предоставляет ещё и функции для обработки сообщений мыши консольному окну.) Используются функции WinAPI, относящиеся к консольным окнам. Здесь можно посмотреть описание функций, структур и сообщений, относящихся к консолям, смотрите всё со словом Mouse. На русском в MSDN этого нет.

-- Пн апр 25, 2011 20:52:15 --

Samir в сообщении #438535 писал(а):
И как выбрать стиль окна именно таким?
Вроде бы, консольное окно создаётся специальной функцией, отличной от CreateWindow или как там, и параметры там другие.

 Профиль  
                  
 
 Re: Рисование в окне консоли
Сообщение25.04.2011, 18:09 
Аватара пользователя


24/11/10
163
Браслав/Минск, Беларусь
Спасибо большое

 Профиль  
                  
 
 Re: Рисование в окне консоли
Сообщение25.04.2011, 18:21 
Админ форума
Аватара пользователя


19/03/10
8952
Переехали в Программирование

 Профиль  
                  
 
 Re: Рисование в окне консоли
Сообщение25.04.2011, 18:53 
Заслуженный участник


09/09/10
3729
C пятой Дельфи в комплекте шел файлик win32.hlp — это тогдашний зачаток MSDN, и в нем целый раздел так и называется: "Consoles and Character-Mode Support". Файл этот доступен и отельно в Интрнете (должен весить 23,6 мегабайта). Почитайте, там вся-вся нужная информация, и ничуть не устаревшая — за эти годы в консоли ничего кардинально не меняли.

Конечно, можно почитать и в MSDN, но лично мне им пользоваться очень неудобно.

 Профиль  
                  
 
 Re: Рисование в окне консоли
Сообщение25.04.2011, 19:26 
Заслуженный участник


27/04/09
28128
(Кстати, с седьмой тоже шёл, как-то здесь про него сказать забыл.)

 Профиль  
                  
 
 Re: Рисование в окне консоли
Сообщение25.04.2011, 20:32 
Аватара пользователя


24/11/10
163
Браслав/Минск, Беларусь
С этим кое-как разобрался. Столкнулся с проблемой: C++ не обрабатывает команды от мыши в консоли.
Код такой:
код: [ скачать ] [ спрятать ]
Используется синтаксис C++
#include <stdio.h>
#include <windows.h>
#include <iostream>
using namespace std;
 
int main(int argc, char* argv[])
{
    HANDLE hStdin;
    DWORD cNumRead, fdwMode, fdwSaveOldMode, i;
    INPUT_RECORD irInBuf[128];
    hStdin = GetStdHandle(STD_INPUT_HANDLE);
    GetConsoleMode(hStdin, &fdwSaveOldMode)  ;    
    fdwMode = fdwSaveOldMode & ENABLE_MOUSE_INPUT;
    SetConsoleMode(hStdin, fdwMode)  ;    
    while (1)
    {  
        ReadConsoleInput(  hStdin,   irInBuf,  250,    &cNumRead) ;  
        for (i = 0; i < cNumRead; i++)
        {
            if (irInBuf[i].EventType==MOUSE_EVENT)
            {                    
                switch (irInBuf[i].Event.MouseEvent.dwEventFlags)
                {
                case MOUSE_MOVED: cout<<"Moved";
                    break;
                case DOUBLE_CLICK: cout<<"Double Click";
                    break;
                case MOUSE_WHEELED: cout<<"Wheel";
                    break;
                default: cout<<"Click (pressed or released)";
                    break;              
                }
                printf(" (X=%d, Y=%d)\n",  irInBuf[i].Event.MouseEvent.dwMousePosition.X,irInBuf[i].Event.MouseEvent.dwMousePosition.Y);
             }
        }
    }
 
    return 0;
}
 

 Профиль  
                  
 
 Re: Рисование в окне консоли
Сообщение29.04.2011, 00:14 
Заслуженный участник


26/07/09
1559
Алматы
2Samir
Простите, я не разбирался с этой темой и скорее всего ляпну глупость. Но что-то вот подозрительна на мой взгляд эта строчка: fdwMode = fdwSaveOldMode & ENABLE_MOUSE_INPUT. Правильно ли выставляется флажок?

-- Пт апр 29, 2011 03:25:35 --

Кстати, если не секрет, зачем такое могло понадобиться? Я имею ввиду необычное использование окна консоли...

 Профиль  
                  
 
 Re: Рисование в окне консоли
Сообщение29.04.2011, 20:38 
Аватара пользователя


24/11/10
163
Браслав/Минск, Беларусь
Здесь всё нормально. Без него тоже не работает.
А понадобилось, потому что такую лабораторную преподаватель задал.

 Профиль  
                  
 
 Re: Рисование в окне консоли
Сообщение29.04.2011, 20:47 
Заслуженный участник


27/04/09
28128
Samir в сообщении #440084 писал(а):
Без него тоже не работает.
А как это понять можно? :shock: А вы пробовали вместо & поставить |?

 Профиль  
                  
 
 Re: Рисование в окне консоли
Сообщение29.04.2011, 21:23 
Аватара пользователя


24/11/10
163
Браслав/Минск, Беларусь
Это означает, что к старым настройкам консоли добавляется возможность принятия консолью событий от мыши

 Профиль  
                  
 
 Re: Рисование в окне консоли
Сообщение29.04.2011, 22:26 
Заслуженный участник


27/04/09
28128
Тогда ставьте черту! Побитовое или здесь нужно, а не и.

 Профиль  
                  
 
 Re: Рисование в окне консоли
Сообщение07.05.2011, 19:22 
Аватара пользователя


24/11/10
163
Браслав/Минск, Беларусь
Всё равно не работает почему-то.

 Профиль  
                  
 
 Re: Рисование в окне консоли
Сообщение08.05.2011, 01:32 


04/02/08
325
Буково
Используйте aalib - все проще рисовать будет.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу 1, 2  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group