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

Меню в консоли - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Массив и матрица http://www.cyberforum.ru/cpp-beginners/thread223810.html
Дано матрицу целых чисел А (n * n). Определить является ли она симметричной относительно главной диагонали. Дан массив слов. Получить слово из последних букв всех слов массива слов P.S У мня екзамен помогите срочно нужно
C++ Составить описание класса для объектов-векторов пожалуйста кто может помочь сейчас, буду очень признателен. Составить описание класса для объектов-векторов, задаваемых кординатами концов в трёхмерном пространстве. Обеспечить операции сложения и вычитания векторов с получением нового вектора (суммы или разности), вычисления скалярного произведения двух векторов, длины вектора, косинуса угла между векторами. Написать программу,... http://www.cyberforum.ru/cpp-beginners/thread223807.html
C++ Сортировка строк
#include "stdafx.h" #include "string.h" int _tmain(int argc, _TCHAR* argv) { char s,s1,s2; int i,j,l,k=0,a1,a2; printf ("Vvedite stroku\n"); gets(s);
C++ 'const char[i]' to 'char[j]'
Привет всем. Усердно изучаю плюсы по Стивену Пратта. В ходе изучения возник вопрос, который в книге не освящён. #include <iostream> using namespace std; struct bob { char name; }; int main() {
C++ Упорядочивание матрицы http://www.cyberforum.ru/cpp-beginners/thread223774.html
Ввести с клавиатуры квадратную матрицу из целых чисел размером M X M (M также вводится с клавиатуры). Ввести число K (1<=K<=M). K-ую по счету (считая от 1 до M) строку матрицы упорядочить по убыванию. После этого найти наибольший по модулю из элементов, лежащих на главной диагонали.
C++ Попытка чтения или записи в защищенную память Добрый вечер. Собственно возникает такая ошибка: Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена. Происходит это при очередном вызове метода QLength() класса Clerk. #include<cstdio> #include<cstdlib> #include<ctime> #include<cmath> using namespace std; #include"list.h" int M = 3; int MAX_CLIENT = 6; int entered = 0; подробнее

Показать сообщение отдельно
-=ЮрА=-
Заблокирован
Автор FAQ
05.09.2011, 21:19     Меню в консоли
blackbanny, предлагаю попробовать, вот такое консольное Dos-меню
Управление - кнопками W(вверх) и S(вниз), если нужно выполнить отмеченный пункт меню, то жми Enter (появиться MessageBox, вместо его засвета, вставляй свой код)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#include <windows.h>
#include <ctype.h>
#include <stdio.h>
#include <conio.h>
 
#define RED RGB(255,0,0)
#define GRN RGB(0,255,0)
#define BLU RGB(0,0,255)
 
#define BLK RGB(0,0,0)
#define WHT RGB(255,255,255)
 
void DrawMenu(HDC hDC, RECT pRECT, int iSEL, int iTITLE);
 
int main()
{
    int  iSEL  = 0;
    int  nYRes = GetSystemMetrics(SM_CYMENUSIZE)*2;
    bool bMenu = true;
 
    HDC  hDC;
    RECT pRECT;
    
    HWND hWnd  = GetForegroundWindow();
    
    if(hWnd)
    {
        
        if(hDC = GetWindowDC(hWnd))
        {
            SetBkMode(hDC,TRANSPARENT);
            GetClientRect(hWnd,&pRECT);
            while(bMenu)
            {
                DrawMenu(hDC, pRECT, iSEL, nYRes);
                RedrawWindow(hWnd,NULL,NULL,
                    RDW_ERASE|RDW_VALIDATE|RDW_UPDATENOW);
                switch(toupper(getch()))
                {
                case 'W':
                    if((iSEL = iSEL - 1) < 0)
                        iSEL = 4;
                    break;
                case 'S':
                    if(4 < (iSEL = iSEL + 1))
                        iSEL = 0;
                    break;
                case 13:
                    MessageBox(hWnd,"ITEM ->","EXCUTE MENU ITEM",MB_OKCANCEL);
                    break;
                default :
                    bMenu = false;
                    break;
                };
            }
        }
    }
    system("pause");
    return 0;
}
 
void DrawMenu(HDC hDC, RECT pRECT, int iSEL, int iTITLE)
{
     //Толщина заголовка консоли
    char sMENU[] = "***MENU***";
    char *sITEM[] = 
    {
        "ITEM 1",
        "ITEM 2",
        "ITEM 3",
        "ITEM 4",
        "ITEM 5"
    };
    char sARROW[] = " -> ";
    BitBlt(hDC,
        4,iTITLE,
        pRECT.right - pRECT.left,
        pRECT.bottom - pRECT.top,
        hDC,
        4,iTITLE,
        BLACKNESS);
    SetTextColor(hDC,BLU);
    TextOut(hDC,(pRECT.right - pRECT.left)/3,iTITLE,sMENU,strlen(sMENU));
    for(int iITEM = 0; iITEM < 5; iITEM++)
    {
        SetTextColor(hDC,GRN);
        if(iITEM == iSEL)
        {
            SetTextColor(hDC,RED);
            TextOut(hDC, 0,iTITLE + (1 + iITEM)*12,sARROW,strlen(sARROW));
            TextOut(hDC,30,iTITLE + (1 + iITEM)*12,sITEM[iITEM],strlen(sITEM[iITEM]));
        }
        else
            TextOut(hDC,30,iTITLE + (1 + iITEM)*12,sITEM[iITEM],strlen(sITEM[iITEM]));
    }
}
Миниатюры
Меню в консоли  
Вложения
Тип файла: rar DosMenu.exe.rar (13.0 Кб, 182 просмотров)
 
Текущее время: 11:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru