PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : wxwindows SetSize bei wxScrolledWindow



tommy@linux
27-08-2004, 15:19
hi,

also ich habe ein Frame, welches ein Fenster vom Typ wxScolledWindow beinhalten soll. Das funktioniert auch ohne Probleme.
Wenn ich aber mein Frame vergrössere möchte ich gerne auch das wxScrolledWindow vergrößern, da sich sonst diverse Einstellungen in diesem verschieben. Das Problem welches ich nun habe ist, das wenn ich die SetSize-Methode aufrufe, ich schon einen Segmentation Fault beim Starten erhalte, bei allen anderen funktioniert diese Funktion aber tadellos.

THX 4 answers

Alex_K
27-08-2004, 20:24
ohne code kann ich nichts genaues sagen, aber meine vermutung ist:

du rufst SetSize über ein event beim ändern der größe des fensters auf. beim starten des programmes wird nun auch so ein event ausgelöst doch das wxScolledWindow wurde noch nicht erzeugt, deshalb gibt es einen zugriffsfehler.

in diesem fall wäre die einfachste möglichkeit den poniter auf das wxScolledWindow mit NULL zu initialisieren, und im event-handler ein if ( <pointeraufwxScolledWindow> != NULL ) vor das SetSize zu setzen.

tommy@linux
28-08-2004, 12:05
hi also hier der event:

void MyFrame::OnSize(wxSizeEvent& event)
{
if ( m_treeCtrl && m_lboxLog && propertyWindow)
{
wxSize size = GetClientSize();
m_treeCtrl->SetSize(0, 0, size.x, 2*size.y/3);
m_lboxLog->SetSize(0, 0, size.x, size.y/5);
propertyWindow->SetSize(0, 0, size.x, 2*size.y/3);
}

event.Skip();
}

Initialisiere m_treeCtrl, m_lboxLog und propertyWindow mit NULL.

tommy@linux
29-08-2004, 19:20
Also ich habe dieses Problem jetzt anders gelöst.

Ich verwende keine GridSizer mehr in dem PropertyWindow und dann funktioniert das automatisch mit der Größe ändern.

Die SetSize-Funktion kann ich jedfoch immer noch nicht verwenden, welche ich aber nun Gott Sei Dank nicht brauch.