Jeetje, ik maakte toen ik ~10 was wel eens consoleprogrammaatjes in C of C++, ik weet niet meer welke. Nu probeer ik het 15 jaar later weer eens op te pikken een stapje verder met een GUI, zou ik toch moeten kunnen, maar ik zou zweren dat ik het opeens 100 keer moeilijker vind.
Is dat nou het resultaat van biertjes in mijn studententijd? 
Consoleprogrammaatjes lukt nog steeds wel, maar als ik wxWidgets wil gebruiken om een mooi venstertje te krijgen dan kan ik het simpelste probleem niet meer debuggen.
Ik pak het standaard helloworld.cpp voorbeeld van WxWidgets. Doet het prima. Maar als ik de Hello World string door een stringvariabele wil vervangen krijg ik het maar niet gecompileerd.
hworld.cpp zit in de documentatie, kan geen direct linkje vinden dus ik zal even heel irritant de hele code hier neerzetten, maar de enige regels van mij zijn: 6, 7, 20, 43, (44)
Ik gebruik toevallig linux, maar het zou niets uit hoeven maken als jij windows gebruikt.
Dit is niet een meteen-naar-GoT situatie. Ik heb regel 20 en 43 werkelijk overal neergezet. Ik heb er zelfs allemaal andere programma's bijgehaald, maar de hele grote programma's zijn te groot voor mij om te analyseren. Ik heb het echt geprobeert, ik durf het bijna niet te zeggen maar ik ben er gewoon al de hele dag mee bezig.
Kan iemand mij vertellen waarom ik het fout doe en hoe het wel moet? Alsjeblieft?
Consoleprogrammaatjes lukt nog steeds wel, maar als ik wxWidgets wil gebruiken om een mooi venstertje te krijgen dan kan ik het simpelste probleem niet meer debuggen.
Ik pak het standaard helloworld.cpp voorbeeld van WxWidgets. Doet het prima. Maar als ik de Hello World string door een stringvariabele wil vervangen krijg ik het maar niet gecompileerd.
hworld.cpp zit in de documentatie, kan geen direct linkje vinden dus ik zal even heel irritant de hele code hier neerzetten, maar de enige regels van mij zijn: 6, 7, 20, 43, (44)
Ik gebruik toevallig linux, maar het zou niets uit hoeven maken als jij windows gebruikt.
(nee geen typo, _() zet dat ervoor ofzo).$ g++ hworld.cpp `wx-config --cxxflags --libs`
hworld.cpp:43: error: 'szString was not declared in this scope'
hworld.cpp:44: error: 'LszString was not declared in this scope'
Dit is niet een meteen-naar-GoT situatie. Ik heb regel 20 en 43 werkelijk overal neergezet. Ik heb er zelfs allemaal andere programma's bijgehaald, maar de hele grote programma's zijn te groot voor mij om te analyseren. Ik heb het echt geprobeert, ik durf het bijna niet te zeggen maar ik ben er gewoon al de hele dag mee bezig.
Kan iemand mij vertellen waarom ik het fout doe en hoe het wel moet? Alsjeblieft?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
| /* * hworld.cpp */ #include "wx/wx.h" #include <string> using namespace std; class MyApp: public wxApp { virtual bool OnInit(); }; class MyFrame: public wxFrame { public: MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size); string szString; void OnQuit(wxCommandEvent& event); void OnAbout(wxCommandEvent& event); DECLARE_EVENT_TABLE() }; enum { ID_Quit = 1, ID_About, }; BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_MENU(ID_Quit, MyFrame::OnQuit) EVT_MENU(ID_About, MyFrame::OnAbout) END_EVENT_TABLE() IMPLEMENT_APP(MyApp) bool MyApp::OnInit() { szString = "Hello World"; MyFrame *frame = new MyFrame( _(szString), wxPoint(50, 50), wxSize(450,340) ); frame->Show(true); SetTopWindow(frame); return true; } MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) : wxFrame( NULL, -1, title, pos, size ) { wxMenu *menuFile = new wxMenu; menuFile->Append( ID_About, _("&About...") ); menuFile->AppendSeparator(); menuFile->Append( ID_Quit, _("E&xit") ); wxMenuBar *menuBar = new wxMenuBar; menuBar->Append( menuFile, _("&File") ); SetMenuBar( menuBar ); CreateStatusBar(); SetStatusText( _("Welcome to wxWidgets!") ); } void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event)) { Close(TRUE); } void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) { wxMessageBox( _("This is a wxWidgets Hello world sample"), _("About Hello World"), wxOK | wxICON_INFORMATION, this); } |
🇪🇺 Buy from EU (GoT)