2014 dxdy logo

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

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




На страницу 1, 2  След.
 
 Рисование в окне консоли
Сообщение25.04.2011, 17:21 
Аватара пользователя
Требуется нарисовать в окне консоли квадрат и перемещать его там с помощью мыши. Возможно ли это сделать? И как выбрать стиль окна именно таким?

 
 
 
 Re: Рисование в окне консоли
Сообщение25.04.2011, 17:38 
Аватара пользователя
Компьютерные вопросы лучше задавать на компьютерном форуме - больше вероятность получить ответ.

 
 
 
 Re: Рисование в окне консоли
Сообщение25.04.2011, 17:47 
В Windows возможно, про остальные не знаю. (Например, для Delphi написан модуль Crt (он был стандартным для Pascal), который, кроме совместимости, предоставляет ещё и функции для обработки сообщений мыши консольному окну.) Используются функции WinAPI, относящиеся к консольным окнам. Здесь можно посмотреть описание функций, структур и сообщений, относящихся к консолям, смотрите всё со словом Mouse. На русском в MSDN этого нет.

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

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

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

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

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

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

 
 
 
 Re: Рисование в окне консоли
Сообщение25.04.2011, 19:26 
(Кстати, с седьмой тоже шёл, как-то здесь про него сказать забыл.)

 
 
 
 Re: Рисование в окне консоли
Сообщение25.04.2011, 20:32 
Аватара пользователя
С этим кое-как разобрался. Столкнулся с проблемой: 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 
2Samir
Простите, я не разбирался с этой темой и скорее всего ляпну глупость. Но что-то вот подозрительна на мой взгляд эта строчка: fdwMode = fdwSaveOldMode & ENABLE_MOUSE_INPUT. Правильно ли выставляется флажок?

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

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

 
 
 
 Re: Рисование в окне консоли
Сообщение29.04.2011, 20:38 
Аватара пользователя
Здесь всё нормально. Без него тоже не работает.
А понадобилось, потому что такую лабораторную преподаватель задал.

 
 
 
 Re: Рисование в окне консоли
Сообщение29.04.2011, 20:47 
Samir в сообщении #440084 писал(а):
Без него тоже не работает.
А как это понять можно? :shock: А вы пробовали вместо & поставить |?

 
 
 
 Re: Рисование в окне консоли
Сообщение29.04.2011, 21:23 
Аватара пользователя
Это означает, что к старым настройкам консоли добавляется возможность принятия консолью событий от мыши

 
 
 
 Re: Рисование в окне консоли
Сообщение29.04.2011, 22:26 
Тогда ставьте черту! Побитовое или здесь нужно, а не и.

 
 
 
 Re: Рисование в окне консоли
Сообщение07.05.2011, 19:22 
Аватара пользователя
Всё равно не работает почему-то.

 
 
 
 Re: Рисование в окне консоли
Сообщение08.05.2011, 01:32 
Используйте aalib - все проще рисовать будет.

 
 
 [ Сообщений: 16 ]  На страницу 1, 2  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group