[wxWidgets] dynamische Allokation wichtig?

15/02/2009 - 22:37 von Markus Wichmann | Report spam
Hi all,

ich bin gerade dabei ein paar Grundlagen von wxWidgets zu lernen, und
habe gerade festgestellt, dass es aus irgendeinem Grunde enorm wichtig
ist, das zu zeigende Widget dynamisch zu allozieren. Folgendes
Code-Snippet:

#v+
#include <wx/wx.h>
#include "simple.h"

class MyApp : public wxApp
{
public:
virtual bool OnInit();
};

IMPLEMENT_APP(MyApp);

bool MyApp::OnInit()
{
#ifdef STATIC
Simple simple(wxT("Simple"));
simple.show();
#else
Simple* simple = new Simple(wxT("Simple"));
simple->show();
#endif

return true;
}
#v-

Dabei ist "Simple" eine von wxWidget abgeleitete Klasse, die nichts
enthàlt außer einer Zentrierungsanforderung.

Ich habe festgestellt, dass die Anwendung mit und ohne -DSTATIC
kompiliert, aber wenn ich sie mit -DSTATIC kompiliere, erscheint kein
Fenster.

Kann mir das jemand erklàren?

Tschö,
Markus
GUI - ein Hintergrundbild und zwölf XTerms

vim -c "exec \"norm iwHFG#NABGURE#IVZ#UNPXRE\"|%s/#/ /g|norm g??g~~"
 

Lesen sie die antworten

#1 Edzard Egberts
16/02/2009 - 10:53 | Warnen spam
Markus Wichmann schrieb:
ich bin gerade dabei ein paar Grundlagen von wxWidgets zu lernen, und
habe gerade festgestellt, dass es aus irgendeinem Grunde enorm wichtig
ist, das zu zeigende Widget dynamisch zu allozieren.

bool MyApp::OnInit()
{
#ifdef STATIC
Simple simple(wxT("Simple"));
simple.show();
#else
Simple* simple = new Simple(wxT("Simple"));
simple->show();
#endif

return true;
}

Kann mir das jemand erklàren?



Ja, das hat nichts mit den Grundlagen von wxWidgets zu tun, sondern mit
C++-Grundlagen: Bei #ifdef STATIC erstellst Du Dein Fenster als lokale
Variable, die beim Verlassen der Methode selbstverstàndlich direkt
wieder zerstört wird.

Ähnliche fragen