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

Аналог меню в консоле - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Решение матричного уравнения http://www.cyberforum.ru/cpp-beginners/thread235045.html
Даны массивы C(n) и D(n). Сформировать матрицу A(n,m),как произведение массивов C и DT и матрицу B, элементы которой вычислить по формуле Bij= Aij / min.Решить матричное уравнение (2A-7E)X=B+E, где E – единичная матрица. Пожалуйста,помогите решить задачку на с++
C++ С++ и линейная алгебра Даны массивы C(n) и D(n). Сформировать матрицу A(n,m),как произведение массивов C и D^T(транспонированная) и матрицу B, элементы которой вычислить по формуле Bij= Aij / min.Решить матричное уравнение (2A-7E)X=B+E, где E – единичная матрица. Срочно требуется помощь в решении! http://www.cyberforum.ru/cpp-beginners/thread235035.html
Считывание из файлов C++
Нужно составить программу на С++, программа считывания из файлов, помогите кто может
Матрица с клавиатуры и с текстового файла? C++
Нужно написать программу на языке С++. В программе предусмотреть диалог, откуда будут вводится элементы исходной матрицы – с клавиатуры или из текстового файла. Результаты выводить на экран и в результирующий текстовый файл. Матрицу выводить до и после преобразований. Задана матрица В(n,m). Определить количество столбцов, упорядоченных по возрастанию. Каждый второй столбец упорядочить по...
C++ Дана матрица вещественных чисел. Найти максимальный элемент и минимальный элементы матрицы. http://www.cyberforum.ru/cpp-beginners/thread235010.html
Дана матрица вещественных чисел. Найти максимальный элемент и минимальный элементы матрицы. Добавлено через 38 секунд решить с файлом плиз
C++ Посчитать количество слов во введенной строке и найти слова, которые начинаются с буквы t Суть задания такова... 1-посчитать к-во слов во введенной строке. 2-Найти слова, которые начинаются с буквы t. 3-Тут главная проблема - вывести слова в порядке возрастания количества букв в них. #include <iostream.h> #include <conio.h> #include <stdio.h> #include <string.h> int main() { clrscr(); char str,str1=""; char* g; подробнее

Показать сообщение отдельно
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
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 — выполнен двойной щелчок мыши.

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