#include "Frage.h" #include #include #include "../../../Initialisierung/Initialisierung.h" // Konstructor // zS: Ein Zeiger auf die zu verwendende Schrift // frage: Die Frage die an den Benutzer gestellt werden soll // left: Die linke Antwort // right: Die rechte Antwort // leftAk: Ein Zeiger auf eine Funktion die beim wählen der Linken Antwort aufgerufen wird // rightAk: Ein Zeiger auf eine Funktion die beim wählen der Rechten Antwort aufgerufen wird // abbruchAk: Ein Zeiger auf eine Funktion die beim Schließen des Fensters aufgerufen wird // maxSize: Die Bildschirmgröße in Pixeln Frage::Frage( Schrift *zS, char *frage, char *left, char *right, std::function< void() > leftAk, std::function< void() > rightAk, std::function< void() > abbruchAk, Punkt maxSize ) : Dialog( zS ) { Text *tmp = new Text( frage ); zS->lock(); zS->setSchriftSize( 12 ); zS->textFormatieren( tmp, 300, 12 ); int br = zS->getTextBreite( tmp ); int hö = zS->getTextHeight( tmp ); zS->unlock(); setSize( br + 12, hö + 58 ); setPosition( maxSize / 2 - getSize() / 2 ); this->text = initTextFeld( 5, 5, br, hö, zS, TextFeld::Style::Text, tmp->getText() ); tmp->release(); this->right = initKnopf( br - 94, hö + 22, 100, 20, zS, Knopf::Style::Normal, right ); this->left = initKnopf( br - 199, hö + 22, 100, 20, zS, Knopf::Style::Normal, left ); bool *verl = &verlassen; this->right->setMausEreignis( [ verl, rightAk ]( void *param, void *obj, MausEreignis me ) -> bool { if( me.id == ME_RLinks && !me.verarbeitet && !*verl ) { *verl = 1; if( rightAk ) rightAk(); } return 1; } ); this->left->setMausEreignis( [ verl, leftAk ]( void *param, void *obj, MausEreignis me ) -> bool { if( me.id == ME_RLinks && !me.verarbeitet && !*verl ) { *verl = 1; if( leftAk ) leftAk(); } return 1; } ); setClosingMe( [ verl, abbruchAk ]( void *param, void *obj, MausEreignis me ) -> bool { if( me.id == ME_RLinks && !me.verarbeitet && !*verl ) { *verl = 1; if( abbruchAk ) abbruchAk(); } return 1; } ); } Frage::~Frage() { text->release(); left->release(); right->release(); }