|
0 / 0 / 0
Регистрация: 25.06.2009
Сообщений: 18
|
|
Аналог меню в консоле28.01.2011, 11:08. Показов 2536. Ответов 11
Метки нет (Все метки)
Привет всем
Обращаюсь к Вам за помощью Помогите, плиз, разобраться с задачкой. Мне надо сделать аналог менюшки в консоле - верхняя строка должна показывать строку с текущим временем(час,мин,сек). Как реализовать что-то подобное на mainloop Windы в консоле
0
|
|
| 28.01.2011, 11:08 | |
|
Ответы с готовыми решениями:
11
Аналог меню в консоле Создание меню в консоле для работы с БД Как сделать выпадающее меню как в командере в консоле? |
|
81 / 39 / 3
Регистрация: 29.01.2010
Сообщений: 386
|
|
| 28.01.2011, 14:16 | |
|
Хм... даже не знаю возможно ли это. Во всяком случае не видел, чтобы у кого - то это получилось.
Ты уверен, что это выполнимо?
0
|
|
|
23 / 23 / 9
Регистрация: 24.04.2010
Сообщений: 220
|
|
| 28.01.2011, 15:02 | |
|
нечто похожее на меню можно сделать оператором switch. Типо выбирай вариант и программа выполнит то что нужно
0
|
|
|
0 / 0 / 0
Регистрация: 28.01.2011
Сообщений: 27
|
||
| 28.01.2011, 15:21 | ||
|
0
|
||
|
81 / 39 / 3
Регистрация: 29.01.2010
Сообщений: 386
|
||
| 28.01.2011, 15:22 | ||
|
0
|
||
|
81 / 39 / 3
Регистрация: 29.01.2010
Сообщений: 386
|
|
| 28.01.2011, 16:06 | |
|
0
|
|
|
|
|
| 28.01.2011, 19:57 | |
|
А зачем Turbo C++? Есть API'лки, позволяющие работать с манипулятором "мышь" в консоли, так же есть ф-ции для "украшения" консольного окна, если захотеть, то можно реализовать меню типа как в GUI. Я когда-то на АСМе такое делал, через те же WinAPI)
Добавлено через 4 минуты Maxwe11, а что TURBO C++ позволяет с досовскими прерываниями работать? Просто я в нем ни когда не работал, не знаю... А в 33 прерывании (int 21h) нет средств для работы с мышью, тут другое прерывание нужно, не помню какое... Добавлено через 2 минуты Нашел, нужно прерывание 33h, т.е. 51-ое ))
0
|
|
|
|
|
| 28.01.2011, 20:12 | |
|
Не по теме: 33hex = 51dec ) Добавлено через 9 минут Работы с мышью в консоли
Большое достоинство консольных приложений — встроенная средствами Windows поддержка мыши. Она реализуется с помощью функции ReadConsolelnput. Важно отметить, что эта функция используется для получения информация о событиях не только мыши, но и о событиях клавиатуры, изменении размера окна и т. д.
B00L ReadConsoleInput(HANDLE hConsolelnput. PINPUT_RECORD lpBuffer, DWORD nLength. LPDWORD lpNumberOfEventsRead); Параметры этой функции: Consolelnput — стандартный дескриптор ввода, полученный функцией GetStdHandle; lpBuffer — указатель на буфер, в который записывается информация о событии мыши, — эта область памяти имеет структуру, называемую INPUT_ RECORD, ее формат рассмотрен чуть ниже (необходимо заметить, что возможно групповое чтение информации из входного буфера, поэтому указатель ipBuffer может указывать на массив структур; информация о том, сколько событий будет читаться в этот массив структур, определяется параметром nLength); nLength — размер во входных записях буфера, на который указывает указатель lpBuffer; lpNumberOfEventsRead — определяет переменную, в которую записывается действительное число прочитанных записей входного буфера. Запись входного буфера консоли имеет структуру, называемую INPUTRECORD. Ее описание на языке C++ выглядит так: typedef struct _INPUT_RECORD { WORD EventType; union { KEYJVENT_RECORD KeyEvent; MOUSE_EVENT_RECORD MouseEvent; WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent; MENU_EVENT_RECORD MenuEvent: FOCUSJVENT_RECORD FocusEvent; } Event: } INPUT_RECORD; В этой структуре первое поле EventType размером в слово содержит тип события, а второе поле Event является объединением различных структур. Поля какой из структур будут заполнены, определяется типом события, то есть первым полем, которое может принимать значения: KEY_EVENT=0001h - поле Event содержит структуру KEYEVENTRECORD с информацией относительно события клавиатуры; MOUSE_EVENT=0002h — ноле Event содержит структуру MOUSEEVENTRECORD с информацией относительно движения мыши или нажатия кнопки; WINDOW_BUFFER_SIZE_EVENT-O004h - поле Event содержит структуру WINDOW_ BUFFER_SIZE_RECORD с информацией относительно нового размера экранного буфера; MENU_EVENT=OOO8h — поле Event содержит структуру MENUEVENTRECORD (это событие используется внутри Windows и должно игнорироваться); FOCUS_EVENT=0010h - поле Event содержит структуру FOCUSEVENTRECORD (это событие используется внутри Windows и должно игнорироваться). Для обработки события мыши структура MOUSEEVENTRECORD выглядит так: typedef struct _MOUSE_EVENT_RECORD { COORD dwMousePosition; DWORD dwButtonState; DWORD dwControlKeyState: DWORD dwEventFlags; } MOUSE_EVENT_RECORD; Исходя из вышесказанного структура INPUTRECORD для обработки событий мыши в программе на ассемблере должна выглядеть так: INPUT_RECORD struc EventType dw 0 dwMousePosition struc x dw 0 у dw 0 ends dwButtonState dw 0 dwControlKeyState dw 0 DwEventFlags dw 0 ends Поле EventType для события мыши содержит значение MOUSE_EVENT=0002h, а поля структуры MOUSEEVENTRECORD соответственно означают следующее: ш dwMousePosition — координаты мыши в окне консоли (в символьных координатах); м dwButtonState — состояние кнопок мыши в момент возникновения события, при нажатии кнопок устанавливаются следующие биты (при одновременном нажатии устанавливается несколько соответствующих битов): если установлен бит 0 ноля dwButtonState, то в момент наступления события была нажата левая кнопка мыши; если установлен бит 1 поля dwButtonState, то в момент наступления события была нажата правая кнопка мыши; если установлен бит 2 поля dwButtonState, то в момент наступления события была нажата средняя кнопка мыши, если она есть; dwControlKeyState — поле описывает состояние управляющих клавиш клавиатуры в момент наступления события мыши (если одновременно нажато несколько клавиш, то значение в этом поле является результатом операции логического сложения ИЛИ перечисленных ниже значений): • RIGHT_ALT_PRESSED=0001h - нажата правая клавиша Alt; • LEFT_ALT_PRESSED=0002h - нажата левая клавиша Alt; • RIGHT_CTRL_PRESSED=0004h — нажата правая клавиша Ctrl; LEFT_CTRL_PRESSED=OOO8h — нажата левая клавиша Ctrl; • SHIFT_PRESSED=OOlOh - нажата любая клавиша SHIFT; • NUMLOCK_ON=0020h - индикатор NumLock включен; • SCROLLLOCK_ON=0040h — индикатор ScrollLock включен; • CAPSLOCK_ON=0080h — индикатор CapsLock включен; ENHANCED_KEY=0100h — нажата клавиша расширенной клавиатуры (101 и 102 клавиши): Ins, Del, Home, End, Page Up, Page Down, «-, t, -», I, / или Enter; Ш dwEventFl ags — поле содержит одно из двух значений: » MOUSE_MOVED=0001h — перемещение мыши; • DOUBLE_CLICK=0002h — выполнен двойной щелчок мыши.
0
|
|
|
22 / 22 / 2
Регистрация: 06.12.2010
Сообщений: 125
|
|
| 28.01.2011, 20:35 | |
|
вряд ли тут требуется именно графическая менюшка. а время в верхней строке - это вообще даром: таймер и gotoxy. и обычная печать.
0
|
|
|
0 / 0 / 0
Регистрация: 25.06.2009
Сообщений: 18
|
|
| 31.01.2011, 10:50 [ТС] | |
|
Привет всем
Спасибо большое за предоставленную инфу Прошу прощения, что не четко выразил суть своей проблемы (сам толком не понимал ).ОС - Линуха, ДОС. Есть табло сигнализации 4 строки. В своей проге я должен имитировать эти 4 строки, а затем по RSу отображать их в этом табло. Первая строчка - дата и время,должна постоянно отображаться, две следующие - информационные(e.g. мигать в случаи аварии) и последняя - меню. Выбор происходит стрелками.
0
|
|
| 31.01.2011, 10:50 | |
|
Помогаю со студенческими работами здесь
12
Аналог меню. Вызов подпрограмм Сделать общие экранные кнопки (аналог экранных кнопок назад, домой, меню)
Как добавить выплывающее меню к уже готовому горизонтальному меню (не меняя дизайн горизонтального меню)?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита, которое может. . .
|
Команды "Заполнить" и "Очистить" на форме документа
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти".
На примере нетипового документа разработанного в конфигурации КА2.
В качестве источника данных указан регистр накопления, в который записываются данные о. . .
|
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер
Написал заготовку:
dotnet new console --aot -o UrlHandler
var items = args. Split(":");
var tag = items;
var id = items;
var executable = args;. . .
|
|
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-text-sdl3-c. zip
finish-text-sdl3-cpp. zip
|