wxWindows: Hjælp til begynder program.

Tags:    c++

<< < 123 > >>
Jeg har valgt at lave GUI-programmer i wxWindows framework'et..håber ik det er et dårligt valg!?

Jeg har læst følgende artikel:
http://www.bzzt.net/~wxwidgets/icpp_wx1.html

For lige som at komme i gang med wxWindows, har jeg bestemt mig for, at jeg vil lave et lille "andengradslignings-løser" program.

Jeg er dog meget hurtigt gået i stå. Jeg har fået lave et vindue, og en tekst kontrol hvor der står lidt tekst i:
http://www.demaweb.dk/cpp/frame.jpg

Men hvordan kommer jeg nu videre herfra? Jeg skal have lavet nogle text-felte hvor man kan indtaste a, b og c. Hvordan går man det? Håber der er en ekspert derude, som vil hjælpe mig med at få lavet et funktionelt program.

Jeg bruger dev-c++ compileren, og min projekt-fil ligger her:
http://www.demaweb.dk/cpp/project.zip

På forhånd tak.

Mvh Dennis Madsen
http://www.demaweb.dk



25 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Jeg synes at du skal starte med at kikke på controls eksemplet, der ligger under samples. Det viser hvordan man arbejder med "controls" på en dialogbox.

Du skal bruge nogle wxEdit controller.

Skal jeg prøve at strikke noget sammen?

Har du fået løst dit problem fra eksperten?



Så mødes vi igen ;)

Nej, har ikke fået løst det på eksperten - men skidt med det. Lad os fortsætte herfra.

Hvad er det for nogle samples, du siger jeg skal prøve at kigge på?

Mvh Dennis Madsen
http://www.demaweb.dk



Sammen med wxWidgets/wxWindows var der en stor mængde eksempler, de ligger i samples mappen.

De blev måske kompileret da du instalerede wxWidgets.



Sammen med wxWidgets/wxWindows var der en stor mængde eksempler, de ligger i samples mappen.

De blev måske kompileret da du instalerede wxWidgets.


HVad er forskellen på wxWindows og wxWingets?

Mvh Dennis Madsen
http://www.demaweb.dk



Jeg har en mappe der hedder:
C:\\Dev-Cpp\\Examples\\wxwindows

Men deri ligger ik nogle brugbare eksempler. Kan du ik kave et par hurtige eksempler til mig, så jeg har noget at arbejde videre på?

Mvh Dennis Madsen
http://www.demaweb.dk



wxWindows er hedder wxWidgets i dag, jeg tror at Bill Gates har fortalt dem at de ikke må kalde det Windows

Jeg lavede dette lille eksempel. Der er tre text-boxe, du kan skrige et tal i de to øverste, og trykke på knappen. Så skriver den summen af de to tal i den sidste text-box.

Fold kodeboks ind/udKode 




Jeg får en fejl i følgende linie:

EVT_BUTTON(ButtonId, OnAddButton)

Der står:

68 main.cpp ISO C++ forbids taking the address of a bound member function to form a pointer to member function. Say `&PanelClass::OnSize'

Mvh Dennis Madsen
http://www.demaweb.dk



Prøv med:

EVT_BUTTON(ButtonId, PanelClass::OnAddButton)
EVT_SIZE(PanelClass::OnSize)

Borland vil godt oversætte det andet, men dette er det korrekte.



Jeg er nu kommet lidt videre, med hjælp fra dit eksempel. Status er, at mit program har tre TextCtrl som er navngivet a, b og c. Desuden er der en button, som jeg senere skal have lavet en onClick (eller hvad vi nu kaldet det) funktion til.

<pre>
#include "wx/wx.h"
#include <sstream>
#include <string>

// The panel, a panel is what make it behave as a dialog box
class PanelClass: public wxPanel
{
public:
PanelClass(wxFrame *frame, int x, int y, int w, int h) : wxPanel(frame, wxID_ANY, wxPoint(x, y), wxSize(w, h))
{
a = new wxTextCtrl(this, Text1Id, "", wxPoint(5, 5), wxSize(50, 20));
b = new wxTextCtrl(this, Text2Id, "", wxPoint(5, 30), wxSize(50, 20));
c = new wxTextCtrl(this, Text3Id, "", wxPoint(5, 55), wxSize(50, 20));
Button1 = new wxButton(this, ButtonId, "Beregn", wxPoint(5, 80), wxSize(100, 20));
}
~PanelClass()
{
delete a;
delete b;
delete c;
delete Button1;
}
private:
// Some id's for my controls
enum CtrlId
{
Text1Id = 1001,
Text2Id,
Text3Id,
ButtonId
};

// Resize my Controls when I'm resized
wxTextCtrl *a;
wxTextCtrl *b;
wxTextCtrl *c;
wxButton *Button1;
void OnAddButton(wxCommandEvent &event);
DECLARE_EVENT_TABLE()
};

// The event table for the panel, this routes messages/events to functions
BEGIN_EVENT_TABLE(PanelClass, wxPanel)
EVT_BUTTON(ButtonId, PanelClass::OnAddButton)
EVT_SIZE(PanelClass::OnSize)
END_EVENT_TABLE()

// The Frame, this is the topleve windows, which hosts the panel
class FrameClass : public wxFrame
{
public:
FrameClass(wxFrame *frame, const wxChar *title, int x, int y, int w, int h) :
wxFrame(frame, wxID_ANY, title, wxPoint(x, y), wxSize(w, h))
{
Panel = new PanelClass(this, x, y, w, h);
}
~FrameClass()
{
delete Panel;
}
PanelClass *Panel;
};

// The application, all applications has one
class AppClass: public wxApp
{
public:
bool OnInit()
{
Frame = new FrameClass(0, "Andengradsligning", 100, 100, 300, 200);
Frame->Show(true);
SetTopWindow(Frame);
return true;
}
FrameClass *Frame;
};

IMPLEMENT_APP(AppClass)

// The function that is called when the user hits the Add button.
void PanelClass::OnAddButton(wxCommandEvent &WXUNUSED(event))
{ }

</pre>

Lige nu, er mit spørgsmål, hvordan jeg får indsat nogle "labels" hvor jeg f.eks kan skrive "Indtast a:".. altså muligheden for at smide noget tekst på vinduet.

Mange tak for din store hjælp. Bare sig til, hvis det her bliver for besværligt.

Mvh Dennis Madsen
http://www.demaweb.dk



En label hedder wxStaticText i wxWindows, du opretter en variabel:
wxStaticText *Label1;

Og bestemmer text og position når du opretter den, på samme måde som med Text-Control'erne:

Label1 = new wxStaticText(this, -1, "SomeText", wxPoint(0, 0), wxSize(100, 20));



<< < 123 > >>
t