|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
08.09.2016, 20:23 | #1 |
Новичок
Джуниор
Регистрация: 08.09.2016
Сообщений: 2
|
codeblocks, pdcurses
Здравствуйте, не могли бы кто-нибудь помочь с вот такой задачей: Есть программа с вертикальным меню. нужно, чтобы 3 кнопка, при её нажатии, выводилось точно такое же второе меню, а во втором меню при нажатии той же самой 3 кнопки опять 1 меню? Вот код исходной программы:
#include <curses.h> #include <panel.h> #include <cstdlib> #include <ctime> #include <windows.h> #include <iostream> #include <cmath> WINDOW *win[3]; void repaint(int a) {int k; for(k=0;k<=2;k++) { if(k==a) { wbkgdset(win[k],COLOR_PAIR(4)); wclear(win[k]); wattron(win[k],COLOR_PAIR(4)); box(win[k],'|','-'); wattron(win[k],COLOR_PAIR(4)); wmove(win[k],2,7); wprintw(win[k],"Knopka %d",k+1); wrefresh(win[k]); } else { wbkgdset(win[k],COLOR_PAIR(4)); wclear(win[k]); wattron(win[k],COLOR_PAIR(4)); box(win[k],'|','-'); wattron(win[k],COLOR_PAIR(4)); wmove(win[k],2,7); wprintw(win[k],"Knopka %d",k+1); wrefresh(win[k]); } } } void knopka0() { int K; double knp=0; WINDOW *testwin=newwin(20,70,4,6); wbkgdset(testwin,COLOR_PAIR(1)); wclear(testwin); // wmove(testwin,5,20); wprintw(testwin,"askei kod klavish"); wmove(testwin,10,20); wprintw(testwin,"Nazhmi lubuu klavishu"); wmove(testwin,15,20); wprintw(testwin,"Kod klavishu"); wmove(testwin,1,20); wprintw(testwin,"Esc - exit"); wmove(testwin,15,20); wrefresh(testwin); // srand(time(NULL)); keypad(stdscr,TRUE); refresh(); do {K=getch(); /*clear();*/ move(19,40); printw("%d",K); refresh();} while (K!=27); wclear(testwin); wrefresh(*win); endwin(); } void knopka1() { int K; int sec; double knp=0; WINDOW *testwin=newwin(20,70,4,6); wbkgdset(testwin,COLOR_PAIR(1)); wclear(testwin); box(testwin,'|','-'); // wmove(testwin,5,20); wprintw(testwin,"magic_value"); wrefresh(testwin); wmove(testwin,15,20); wprintw(testwin,"Esc - exit"); wrefresh(testwin); // // srand(time(NULL)); int sec2; //int resh; sec=rand()%100+1; //sec*=1000; //sec2=rand()%10+1; //resh=sec2*sec; //Sleep(sec); wmove(testwin,15,20); attron(A_BOLD); printw("%d",sec); attroff(A_BOLD); attron(A_BLINK); //wprintw(testwin,"Go"); //wprintw(testwin,sec); wrefresh(testwin); //printw("%d",sec); move(12,32); wrefresh(*win); wrefresh(testwin); wclear(testwin); wclear(*win); do { K=getch(); //clear(); if(K==32) { endwin(); } //printw("%d",K); //refresh();} } while (K!=27); { move(12,32); /* int delwin(WINDOW testwin); int delwin(WINDOW win);*/ } } void knopka2() { int K; double knp=0; WINDOW *testwin=newwin(20,70,4,6); wbkgdset(testwin,COLOR_PAIR(1)); wclear(testwin); box(testwin,'|','-'); // wmove(testwin,5,20); wprintw(testwin,"Hello world"); wmove(testwin,10,20); wprintw(testwin,"Esc - exit"); wrefresh(testwin); // srand(time(NULL)); keypad(stdscr,TRUE); refresh(); int C; { C=getch(); } while (C!=27&&C!=32); { wclear(testwin); wrefresh(*win); endwin(); } } // int main() { initscr(); // start_color(); init_pair(1,COLOR_WHITE,COLOR_BLUE) ; init_pair(2,COLOR_BLACK,COLOR_WHITE ); init_pair(3,COLOR_BLACK,COLOR_CYAN) ; init_pair(4,COLOR_BLACK,COLOR_WHITE ); // // bkgdset(COLOR_PAIR(1)); noecho(); clear(); cbreak(); // int maxx=getmaxx(stdscr); int maxy=getmaxy(stdscr); // WINDOW *topwin=newwin(3,maxx,0,0); wbkgdset(topwin,COLOR_PAIR(2)); wclear(topwin); wattron(topwin,COLOR_PAIR(2)); box(topwin,'|','-'); wmove(topwin,1,30); wprintw(topwin," MENU"); wmove(topwin,17,32); // int k; for(k=0;k<=2;k++) { win[k]=newwin(5,25,k*5+5,25); wbkgdset(win[k],COLOR_PAIR(4)); wclear(win[k]); wattron(win[k],COLOR_PAIR(4)); box(win[k],'|','-'); wmove(win[k],2,7); wprintw(win[k],"Knopka %d",k+1); } // refresh(); wrefresh(topwin); for(k=0;k<=2;k++){wrefresh(win[k]);} // mousemask(BUTTON1_CLICKED,NULL); keypad(stdscr,TRUE); // int C; int active=3; int x=32; int y=7; move(y,x); // do{ C=getch(); if ((C==259)&&(y>5)) y-=5; if ((C==258)&&(y<15)) y+=5; if ((C==260)&&(x>0)) x--; if ((C==261)&&(x<100)) x++; move(y,x); if(C==32) { /*MEVENT M; nc_getmouse(&M); if((M.x>=25)&&(M.x<=50)&&(M.y>=5)&& (M.y<=20)){active=M.y/5;active--;} else active=3;*/ if(/*active==0*/y==17){knopka0();} if(/*active==1*/y==12){knopka1();} if(/*active==2*/y==7){knopka2();} if((active>=0)&&(active<=2)) { wclear(topwin); clear(); wclear(topwin); refresh(); box(topwin,'|','-'); wmove(topwin,1,30); wprintw(topwin," MENU"); wrefresh(topwin); repaint(active); move(17,32); refresh(); clear(); //wrefresh(*win); }else repaint(active); } } while(C!=27); endwin(); return 0; } |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Настройка CodeBlocks на С++ | vova4 | Общие вопросы C/C++ | 0 | 19.01.2014 13:53 |
SDL 2.0 + TTF CodeBlocks | Murashov | Qt и кроссплатформенное программирование С/С++ | 6 | 30.11.2012 18:40 |
CodeBlocks + SDL 2.0; Kubuntu 12.04 | Murashov | Qt и кроссплатформенное программирование С/С++ | 0 | 29.11.2012 22:10 |
Qt + CodeBlocks | Murashov | Qt и кроссплатформенное программирование С/С++ | 4 | 11.11.2012 22:55 |
C++ CodeBlocks *nix | Crab2 | Помощь студентам | 2 | 02.04.2010 06:10 |