PDA

Visualizza la versione completa : [C++] Libreria wxWidgets ed eventi in applicazione Console


afrappe
13-06-2007, 15:05
vorrei gestire la pressione dei tasti in un'applicazione consolle
ora si potrebbe semplicemente catturare il tasto con cin >> miaVariabile ma vorrei a scopo didattico usare la gestione degli eventi di wxWidgets ma mi viene un dubbio

essendo la mia una applicazione consolle e non avendo definito una "application" con la macro "IMPLEMENT_APP(BasicApplication)" (il punto di inizio di una applicazione a finestre secondo i crismi di wxWidgets) non so cosa assegnare nella dichiarazione della event table

per una applicazione a finestre facevo questo:


BEGIN_EVENT_TABLE(BasicFrame,wxFrame)
EVT_MENU(BASIC_OPEN,BasicFrame::onOpenFile)
EVT_MENU(BASIC_ABOUT,BasicFrame::onAbout)
EVT_MENU(BASIC_EXIT,BasicFrame::onExit)
EVT_SIZE( BasicFrame::onSize)
EVT_BUTTON(BASIC_BUTTON,BasicFrame::onButtonPress)
EVT_BUTTON(EXTENDED_BUTTON,BasicFrame::onButtonPre ss)
END_EVENT_TABLE()

passavo BasicFrame(che era la mia classe a cui veniva associata la tavola degli eventi) e wxFrame il tipo della classe appena passata

ora nella mia applicazione consolle non ho una "BasicFrame" consolle ovvero una classe, ma ho semplicemente il metodo main,
allora ho pensato ad una cosa del genere:


BEGIN_EVENT_TABLE(main,wxConsolle)
.......
....
..
END_EVENT_TABLE()

che chiaramente non puo funzionare perche wxConsolle non esiste e non so nemmeno se gli si puo passare main (che tra l'altro non è una classe)

spero di essermi spiegato, si puo fare una cosa simile oppure no?

MItaly
13-06-2007, 15:18
Non puoi usare la gestione degli eventi di wxWidgets con un'applicazione console, perché tale gestione si basa sui messaggi inviati alle finestre, e queste ultime nelle applicazioni console non sono ovviamente impiegate.

afrappe
13-06-2007, 15:51
anche nel caso di eventi relativi alla tastiera?

####MENU####
per iniziare premi 1
per uscire premi 2
per cancellare premi 3
ecc ecc

MItaly
13-06-2007, 22:01
Certo. Comunque per quello che vuoi fare basta una getch()...

Loading