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

Создание интерфейса пользователя в текстовом режиме - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Строки STRING - как присвоить в S - B http://www.cyberforum.ru/cpp-beginners/thread454802.html
Всем Привет, не знаю как присвоить в S - B , помогите плиз) #include <iostream> int a; using namespace std; int main() { string s, b; char m; int i, j, n , l, kol, x;
C++ код Хаффмана нужно написать программу кодирования и раскодирования по методу Хаффмана, я написал ну что то расскодируется не правильно, помогите пожалуйсто...очень надо.. BinaryTree.h #ifndef BINARYTREE_H... http://www.cyberforum.ru/cpp-beginners/thread454799.html
Падение производительности на gcc C++
Кто-нибудь сталкивался с тем, что при компиляции gcc, если разносить определение класса и реализацию в заголовочный и, соответственно, в cpp файл, то падает производительность? Привожу код "без...
C++ Файловый и консольный ввод и вывод
нужно написать программы одна чтобы вводила функцию консольно, а другая файлово
C++ Работа с allocator (управление памятью) http://www.cyberforum.ru/cpp-beginners/thread454785.html
Нормальной инфы на русском языке я так и не нашел в инете( про него читал в книге Программирование принципы и практика С++ Страуструп, но там так и реализацию функции для своего аллокатора , только...
C++ Исчезает всё нарисованное на gdi+ Доброго времени суток! Пишу подобие своего gui на gdi+.. Всё бы хорошо, но через некоторое время (около минуты), исчезает всё нарисованное.. и никакой Invalidate не помогает(( Что же делать??... подробнее

Показать сообщение отдельно
Nameless One
Эксперт С++
5773 / 3424 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
28.03.2012, 18:26
Цитата Сообщение от beckham Посмотреть сообщение
но ничего не получается...
Цитата Сообщение от beckham Посмотреть сообщение
Библиотека PDCurses.
конечно не получается, у тебя же *curses даже и не пахнет. Вот пример на ncurses:

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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
#include <ncurses.h>
#include <stdlib.h>
 
void start(void);
void draw_rect(int, int, int, int);
 
int main(void)
{
    bool start_draw = FALSE;
    int last_row = 0, last_col = 0;
    
    start();
    
    for(;;)
    {
    int c = getch();
    int row, col;
 
    if(c == 'q' || c == 'Q')
        break;
 
    getyx(stdscr, row, col);
    
    switch(c)
    {
    case KEY_LEFT:
        move(row, col - 1);
        break;
    case KEY_RIGHT:
        move(row, col + 1);
        break;
    case KEY_UP:
        move(row - 1, col);
        break;
    case KEY_DOWN:
        move(row + 1, col);
        break;
    case 'c': case 'C':
        start_draw = FALSE;
        clear();
        refresh();
        move(row, col);
        break;
    case ' ':
        if(start_draw == FALSE)
        {
        last_row = row;
        last_col = col;
        addch(' ' | A_REVERSE);
        refresh();
        }
        else
        {
        int same_row = last_row == row;
        int same_col = last_col == col;
        
        if(same_row && same_col)
        {
            addch(' ');
            refresh();
        }
        else if(same_row || same_col)
        {
            continue;
        }
        else
        {
            mvaddch(last_row, last_col, ' ');
            draw_rect(last_row, last_col, row, col);
            refresh();
        }
        }
        
        start_draw = !start_draw;
 
        break;
    }
    }
    
    endwin();
    exit(0);
}
 
void start(void)
{
    initscr();
    keypad(stdscr, TRUE);
    nonl();
    cbreak();
    noecho();
    
    if(has_colors())
    {
    start_color();
    init_pair(1, COLOR_GREEN, COLOR_BLACK);
    attrset(COLOR_PAIR(1));
    }
    else
    {
    endwin();
    fputs("Your terminal doesn't support colors\n", stderr);
    exit(1);
    }
}
 
#define MIN_MAX(X, Y, MIN, MAX)                 \
    do                              \
    {                               \
    if((X) < (Y))                       \
    {                           \
        MIN = X;                        \
        MAX = Y;                        \
    }                           \
    else                            \
    {                           \
        MIN = Y;                        \
        MAX = X;                        \
    }                           \
    } while(0)                          
    
void draw_rect(int last_row, int last_col, int row, int col)
{
    int left, right, top, bottom, lwidth, lheight;
 
    MIN_MAX(last_row, row, top, bottom);
    MIN_MAX(last_col, col, left, right);
 
    lheight = bottom - top - 1;
    lwidth = right - left - 1;
 
    mvaddch(top, left, ACS_ULCORNER);
    hline(ACS_HLINE, lwidth); 
    mvaddch(top, right, ACS_URCORNER);
    mvvline(top + 1, left, ACS_VLINE, lheight);
    
    mvaddch(bottom, left, ACS_LLCORNER);
    hline(ACS_HLINE, lwidth); 
    mvaddch(bottom, right, ACS_LRCORNER);
    mvvline(top + 1, right, ACS_VLINE, lheight);
}
Передвижение курсора выполняется стрелками, 'q' — выход, 'c' — очистка экрана, пробел — установка/снятие точек, которые будут ограничивать прямоугольник.

Создание интерфейса пользователя в текстовом режимеСоздание интерфейса пользователя в текстовом режимеСоздание интерфейса пользователя в текстовом режиме
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru