Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.01.2011, 10:09   #1
DimonK
 
Регистрация: 28.01.2011
Сообщений: 4
По умолчанию Аналог меню в консоле

Привет всем
Обращаюсь к Вам за помощью Помогите, плиз, разобраться с задачкой.
Мне надо сделать аналог менюшки в консоле - верхняя строка должна показывать строку с текущим временем(час,мин,сек). Как реализовать что-то подобное на mainloop Windы в консоле
DimonK вне форума Ответить с цитированием
Старый 28.01.2011, 11:59   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Это с поддержкой мышки? и из-под Винды?
Или под ДОСом?
Думаю что в консоли винды такое так просто не сварганить... А из-под ДОСа попроще - там прерывания мышки можно подключить.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.01.2011, 14:40   #3
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

Можно использовать ncurses и аналоги
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Старый 28.01.2011, 14:48   #4
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Думаю что в консоли винды такое так просто не сварганить...
Рошаль сварганил же )
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 28.01.2011, 19:40   #5
alexcoder
Форумчанин
 
Регистрация: 31.05.2009
Сообщений: 786
По умолчанию

К примеру, при помощи функции WriteConsoleOutput и др. сделать свои функции вывода символа на консоль с заданными атрибутами и в заданное место, вывода строки, изменения атрибутов, и уже через эти функции рисовать менюшки.
Помощь с программами:
vk.com/alexcoder1
e-mail: informatik101@mail.ru
alexcoder вне форума Ответить с цитированием
Старый 28.01.2011, 20:11   #6
hotcooler17
Пользователь
 
Регистрация: 06.01.2009
Сообщений: 34
По умолчанию

Вот установка курсора в нужную позицию и очистка n строк(точнее n*80 символов) начиная с текущей позиции.

void clrscr(int удалять_строк, bool с_позиции_0_0 = true)
void setxy(int отступ_слева, int отступ_сверху) // -1 в любом из параметров - не изменять отступ по этой оси.
Код:
#include <Windows.h>
#include "console.h"

POINT screensize;
DWORD cCharsWritten;
CONSOLE_SCREEN_BUFFER_INFO csbi;
DWORD dwConSize;
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);

void clrscr(int h,bool fromBegin)
{
	if(fromBegin)
		setxy(0,0);
	COORD c;
	GetConsoleScreenBufferInfo(hConsole,&csbi);
	c.X = csbi.dwCursorPosition.X;
	c.Y = csbi.dwCursorPosition.Y;
	if(!h) h = csbi.dwSize.Y;
	dwConSize = csbi.dwSize.X*h;// * csbi.dwSize.Y;
	screensize.x = csbi.dwSize.X;
	screensize.y = h;//csbi.dwSize.Y;
	FillConsoleOutputCharacter(hConsole,' ',dwConSize,c,&cCharsWritten);
	GetConsoleScreenBufferInfo(hConsole,&csbi);
	FillConsoleOutputAttribute(hConsole,csbi.wAttributes,dwConSize, c,&cCharsWritten);
	SetConsoleCursorPosition(hConsole,c);
	return;
}

void setxy(int x, int y)
{
	GetConsoleScreenBufferInfo(hConsole,&csbi);
	COORD coord;
	if(x>=0)
		coord.X = x;
	else
		coord.X = csbi.dwCursorPosition.X;
	if(y>=0)
		coord.Y = y;
	else
		coord.Y = csbi.dwCursorPosition.Y;
	SetConsoleCursorPosition(hConsole,coord);
	return;
}
console.h
Код:
#ifndef _CONSOLE_H
#define _CONSOLE_H

void clrscr(int h=0, bool fromBegin = true);
void setxy(int x, int y);

#endif
По поводу mainloop'а - в винде есть сообщения для этого. Т.к. тут нет никаких сообщений, и по этому
Код:
while(1)
{
    if(GetAsyncKeyState(VK_ESC))
    {
        ...
        break;
    }
}
Подробнее на MSDN

Последний раз редактировалось hotcooler17; 28.01.2011 в 20:20.
hotcooler17 вне форума Ответить с цитированием
Старый 31.01.2011, 10:39   #7
DimonK
 
Регистрация: 28.01.2011
Сообщений: 4
По умолчанию

Привет всем
Спасибо большое за предоставленную инфу

Прошу прощения, что не четко выразил суть своей проблемы (сам толком не понимал).
Цитата:
Сообщение от Stilet Посмотреть сообщение
Это с поддержкой мышки? и из-под Винды?
Или под ДОСом?.
ОС - Линуха, ДОС и мышак не нужен. Есть табло сигнализации 4 строки. В своей проге я должен имитировать эти 4 строки, а затем по RSу отображать их в этом табло. Первая строчка - дата и время,должна постоянно отображаться, две следующие - информационные(e.g. мигать в случаи аварии) и последняя - меню. Выбор происходит стрелками.

Вот я и обратился к Вам за помощью...
DimonK вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Графика в консоле VC++ MadHead86 Общие вопросы C/C++ 2 14.09.2012 15:48
меню в консоле blackbanny Общие вопросы C/C++ 2 05.01.2011 18:58
Позиционирование в консоле Stepan575 Общие вопросы C/C++ 1 05.12.2010 12:58
Псевдографика в консоле Spice Общие вопросы .NET 2 23.12.2008 13:41
аналог меню пуск RammFan Общие вопросы Delphi 14 27.02.2007 08:49