Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.09.2016, 20:23   #1
Maprol
Новичок
Джуниор
 
Регистрация: 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;
}
Maprol вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Настройка 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