|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Sep 2001
Città: Firenze
Messaggi: 216
|
WxWindows e console
Esiste qualcosa nelle wxwindow che mi simuli la console (dos) tipica del
C++, dato che volevo inserire all'interno della mia OnInit() un programma già scritto in C++ ma dove voglio sia input che output su console? Grazie. Ciao |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Se sei sotto windows, dovresti tentare di creare un normale progetto per console: oltre alle finestre di wxwindows, avrai anche una console dove potrai scriverci con le normali funzioni per stdout. Ho provato questo procedimento tempo fa con le FOX, e mi funzionava. Non so se la lettura però funziona.
Se sei sotto linux, la console è sempre abilitata (basta che lanci il programma da console, o imposti un link in kde indicando di eseguire il programma da console).
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Sep 2001
Città: Firenze
Messaggi: 216
|
Mi è stato suggerita anche la seguente cosa:
"Se vuoi l'output su console è sufficiente non inserire il flag -mwindows(questo in Mingw) o simili nelle opzioni del compilatore(dipende dal compilatore)" Io uso visual studio 6.0 da poco, sai che opzione non devo inserire? Equivalente a questa -mwindows? Ciao |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Il vc non consente di create una applicazione per console?
Non lo conosco molto neanch'io...
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Apr 2002
Città: Palermo
Messaggi: 4913
|
Se nella scelta dei progetti prendi "console application", non ti va bene?
__________________
Sun Certified Java Programmer - Sun Certified Web Component Developer - Sun Certified Business Component Developer |
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Sep 2001
Città: Firenze
Messaggi: 216
|
Una cosa del genere secondo voi può permettermi di utilizzare il cout e il cin?
wxFFileOutputStream output(stdout); wxTextOutputStream cout(output); wxFFileInputStream input(stdin); wxTextInputStream cin(input); |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Ma utilizzare cin e cout non ti piace ?
|
|
|
|
|
|
#8 | |
|
Member
Iscritto dal: Sep 2001
Città: Firenze
Messaggi: 216
|
Quote:
Ma come faccio? La console come faccio ad attivarla dentro la OnInit() e usare li dentro il cin e i cout? |
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Ma il suggerimento che ti hanno dato gli altri non funziona ?
Quindi tu vorresti attivarla da codice... Credo che si possa fare, ma devi ricorrere a qualche API... Prova con AllocConsole... |
|
|
|
|
|
#10 |
|
Member
Iscritto dal: Sep 2001
Città: Firenze
Messaggi: 216
|
Allocconsole non mi sembra che sia portabile...l'avevo già guardata qualche giorno fa...sbaglio?
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Chiaramente non è portabile...
Comunque basta fare: #ifdef WIN32 AllocConsole.... #elif LINUX //non mi ricordo qual'è la costante predefinita .... #endif |
|
|
|
|
|
#12 | |
|
Member
Iscritto dal: Sep 2001
Città: Firenze
Messaggi: 216
|
Quote:
Linking... p2p.obj : error LNK2001: unresolved external symbol "public: void __thiscall wxStringData::Free(void)" (?Free@wxStringData@@QAEXXZ) MSVCRTD.lib(crtexe.obj) : error LNK2001: unresolved external symbol _main Debug/P2P.exe : fatal error LNK1120: 2 unresolved externals Error executing link.exe. P2P.exe - 3 error(s), 0 warning(s) Proverò a guardare se con l'AllocConsole riesco a farlo andare... |
|
|
|
|
|
|
#13 | ||
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Quote:
Quote:
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
||
|
|
|
|
|
#14 | |
|
Member
Iscritto dal: Sep 2001
Città: Firenze
Messaggi: 216
|
Quote:
Io ho utilizzato la seguente struttura. Essendo alle primissime armi con le wxwindows (è il primo programma che provo a scrivere) non ho sinceramente idea di dove piazzare int main() classico del linguaggio C. Il programma con le WxWindows lo sto scrivendo dentro la OnInit() #include "wx/wxprec.h" #ifdef __BORLANDC__ #pragma hdrstop #endif #ifndef WX_PRECOMP #include "wx/wx.h" #endif #include "wx/db.h" #include "wx/dbtable.h" #include "stdio.h" // the application icon (under Windows and OS/2 it is in resources) #if defined(__WXGTK__) || defined(__WXMOTIF__) || defined(__WXMAC__) || defined(__WXMGL__) || defined(__WXX11__) #include "mondrian.xpm" #endif class MyApp : public wxApp { public: virtual bool OnInit(); }; class MyFrame : public wxFrame { public: MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size, long style = wxDEFAULT_FRAME_STYLE); void OnQuit(wxCommandEvent& event); void OnAbout(wxCommandEvent& event); private: DECLARE_EVENT_TABLE() }; enum { Minimal_Quit = 1, Minimal_About = wxID_ABOUT }; BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_MENU(Minimal_Quit, MyFrame: EVT_MENU(Minimal_About, MyFrame: END_EVENT_TABLE() IMPLEMENT_APP(MyApp) bool MyApp: { //*** QUI DENTRO CI HO SCRITTO LA MIA APPLICAZIONE E LA FACCIO GIRARE QUI *** return TRUE; } //da qui in poi ci sono altre funzioni inerenti al frame, niente di importante nel nostro caso |
|
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Credo che il main venga implementato qui dentro:
IMPLEMENT_APP(MyApp) di conseguenza suppongo che l'unico tipo di main supportato sia il winmain...ed è per questo che non funziona... In tal caso non puoi creare la console in questo modo... |
|
|
|
|
|
#16 | |
|
Member
Iscritto dal: Sep 2001
Città: Firenze
Messaggi: 216
|
Quote:
Devo quindi puntare sull'AllocConsole.... Se metto come hai detto mi gira quindi anche su linux, sicurissimo? :-) (non ho qui con me linux adesso e non posso fare la prova pure li) Ho fatto una prova ora su Windows e me la apre la console, mettendo il seguente codice dentro la mia OnInit() AllocConsole(); SetConsoleTitle("Titolo"); cprintf("Scrivo qualcosa"); cscanf( "%u", prova); |
|
|
|
|
|
|
#17 | |
|
Member
Iscritto dal: Sep 2001
Città: Firenze
Messaggi: 216
|
Quote:
Devo quindi puntare sull'AllocConsole.... Se metto come hai detto mi gira quindi anche su linux, sicurissimo? :-) (non ho qui con me linux adesso e non posso fare la prova pure li) Ho fatto una prova ora su Windows e me la apre la console, mettendo il seguente codice dentro la mia OnInit() AllocConsole(); SetConsoleTitle("Titolo"); cprintf("Scrivo qualcosa"); cscanf( "%u", prova); |
|
|
|
|
|
|
#18 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Diciamo che ti compila su Linux...sicuramente per visualizzare la console su Linux devi puntare su qualche altra cosa...
|
|
|
|
|
|
#19 |
|
Member
Iscritto dal: Sep 2001
Città: Firenze
Messaggi: 216
|
Ho creato un frame, ora però vorrei riuscire a scrivere e visualizzare qualcosa all'interno.
Mi sapreste indicare 2 funzioni per wxwindows per: - mandare uno stream in output all'interno di questo frame - prendere un valore in input in questo frame e salvarlo poi in una variabile ciao |
|
|
|
|
|
#20 |
|
Senior Member
Iscritto dal: Apr 2002
Città: Vigevano(PV)
Messaggi: 2124
|
up
__________________
Gnu/Linux User
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:38.



















