Probleme mit wgetch(win)
-
Guten Abend und ein frohes rest Fest erstmal.
Ich bin dabei eine Oberfläche zuschreiben, in der später auch eine Steuerung für eine Platine eingebaut wird.
Mein Problem zurzeit ist das ich ein zusatz Fenster öffne , in diesem Fall Jalousie
und ich da weiter Auswahlen habe.
Aber z.b soll mit der ESC-taste erst die Oberfläche beendet werden wenn nur das hauptfenster noch da ist. Aber wgetch(wha) reaagiert auch wenn das Fenszer für Jaloussie auf ist wgecth(wja).
Kann mir jemand da etwas helfen ?Mfg Michael
//******* g++ -Wall -lncurses -lpanel -o menu menu.cc #include <panel.h> #include <curses.h> #include <iostream> #include <stdlib.h> #include <ctime> //#include <bwctmb/bwctmb.h> using namespace std; //******** speicherfrage der panel/fenster ******** WINDOW *whaupt, *wjalousie, *whinter, *win4, *win5; PANEL *phaupt, *pjalousie, *phinter, *pan4, *pan5; void ende() { del_panel(phaupt); del_panel(phinter); delwin(whaupt); delwin(whinter); endwin(); cout <<"Programm Beemdet durch Benutzer\n"; } //********************** Zeitabfrage und umwandeln ************************ void uhrzeit() { time_t zeit = time(NULL); tm *p_zeit = localtime(&zeit); char lzeit[80]; //stellt lzeit 80 zeichen zu verfügung strftime (lzeit, sizeof(lzeit), "Es ist der %d %b %Y und %H:%M:%S",p_zeit); //schreibt string in lzeit mvwaddstr (whinter, 23, 44, lzeit); } //************************** Hauptmenue ************************************ void haupt () { whaupt = newwin (20, 79, 2, 0); box(whaupt, ACS_VLINE, ACS_HLINE); phaupt = new_panel(whaupt); keypad(whaupt, TRUE); nodelay(whaupt, TRUE); wbkgd(whaupt, COLOR_PAIR(3)); mvwaddstr(whaupt, 1, 5, "1 = Jalousiesteuerung"); mvwaddstr(whaupt, 2, 5, "2 = Heizungssteuerung"); mvwaddstr(whaupt, 3, 5, "3 = Lichtsteuerung"); mvwaddstr(whaupt, 4, 5, "4 = Steckdosensteuerung"); mvwaddstr(whaupt, 5, 5, "5 = Gartenbewaesserung"); mvwaddstr(whaupt, 6, 5, "6 = Aussenbeleuchtung"); update_panels(); doupdate(); } //************************** Jalousiemenue ********************************* void jalousie () { wjalousie = newwin (12, 30, 3, 40);//****** 10 Zeilen, 30 Spalten, y, x ****** box(wjalousie, ACS_VLINE, ACS_HLINE);//**** Zeichnet Box um Win ****** pjalousie = new_panel(wjalousie); wbkgd(wjalousie, COLOR_PAIR(2)); keypad(wjalousie, TRUE); //*** Kursor-Funktion-Sondertasten ein nodelay(wjalousie, TRUE); //*** wgetch ERR ein wenn kein Zeichen anliegt mvwaddstr(wjalousie, 1, 2, "1 = Jalousie Schlafzimmer"); mvwaddstr(wjalousie, 2, 2, "2 = Jalousie Wohnzimmer"); mvwaddstr(wjalousie, 3, 2, "3 = Jalousie Badezimmer"); mvwaddstr(wjalousie, 4, 2, "4 = Jalousie Flur oben"); mvwaddstr(wjalousie, 5, 2, "5 = Jalousie Flur unten"); mvwaddstr(wjalousie, 6, 2, "6 = Jalousie Buero"); mvwaddstr(wjalousie, 7, 2, "7 = Jalousie Kueche"); mvwaddstr(wjalousie, 8, 2, "8 = Jalousie allgemein"); mvwaddstr(wjalousie, 10, 2, "Enter = Fenster schliesen"); } //****************************** Auswahl ***************************** void auswahl() { int wha, wja; while (1) { wja = wgetch(wjalousie); wha = wgetch(whaupt); if (wha == 27) break; //ESC-taste if (wha == 49) {jalousie();} if (wja == '\n') {del_panel(pjalousie); delwin(wjalousie);} if (wja == 49) {mvwaddstr(whaupt, 15, 2, "Taste1");} if (wja == 50) {mvwaddstr(whaupt, 15, 2, "Taste2");} uhrzeit(); // update_panels(); // doupdate(); } } int main() { initscr(); timeout(0); atexit(ende); // ausgang clear(); noecho(); curs_set(0); // cursor ausschalten cbreak(); start_color(); init_pair(1, COLOR_BLUE, COLOR_BLACK); // Schrift Blau/Hintergund Schwarz init_pair(2, COLOR_GREEN, COLOR_BLACK); init_pair(3, COLOR_YELLOW, COLOR_BLACK); whinter = newwin (24,79,0,0); phinter = new_panel(whinter); keypad(whinter, TRUE); nodelay(whinter, TRUE); wbkgd(whinter, COLOR_PAIR(1)); wattrset (whinter, A_BOLD); mvwaddstr(whinter, 0, 24, "Steuerungsmenue / Homecontroll"); mvwaddstr(whinter, 23, 0, "ESC um Oberflaeche zu beenden"); haupt(); auswahl(); return (0); }
-
Niemand de mir nen keinen tipp gibt ? ich möchte ja nicht gleich die Lösung haben

-
Was ist das für ein Framework? Standard C++ ist es nicht.
-
Nun ich bin Anfänger , werde wohl c und c++ mischen