Applet per Button aufrufen...

03/08/2013 16:06 Cartmanforlife#1
Hallöle,

folgendes habe ich probiert, um ein Applet (welches übringens per Hotkey funktioniert) per Button klick aufzurufen: Das ganze findet in der WndField.cpp statt:

OnChildNotify Function... bla
Code:
switch( nID )
	{
	case WIDC_BUTTON2: //Teleporter
		CWndTeleporter *pTeleporter;
		pTeleporter->Initialize();
		break;
	}
Wenn der Button2, in dem fall halt die teleport app gedrückt wird, schmiert die neuz ab. Was mache ich falsch?

Edit: Ich bekomme übrigens nen C4700 Warning das die Variable pTeleporter benutzt wird, bevor sie initialisiert wird... ?

Danke im Voraus.
03/08/2013 19:27 Mognakor#2
Du erstellst einen Zeiger der auf irgendwas zeigt und versuchst dann von dort eine Funktion aufzurufen, klar dass das crasht.

Du musst erst einmal eine neue Instanz erzeugen auf die der Zeiger zeigt, da ich mich nicht ausm Kopf mit den Flyff-Fenster auskenne, rate ich dir einfach mal das ganze mit anderen Hotkeys zu vergleichen.
03/08/2013 20:38 Cartmanforlife#3
Quote:
Originally Posted by Mognakor View Post
Du erstellst einen Zeiger der auf irgendwas zeigt und versuchst dann von dort eine Funktion aufzurufen, klar dass das crasht.

Du musst erst einmal eine neue Instanz erzeugen auf die der Zeiger zeigt, da ich mich nicht ausm Kopf mit den Flyff-Fenster auskenne, rate ich dir einfach mal das ganze mit anderen Hotkeys zu vergleichen.
Das Fenster funktioniert ja schon mit Hotkeys nur eben nich per Button es zu öffnen...

Mir ist gerade eingefallen das beim adden eines Freundes auf das Plus gedrückt wird und dabei das Fenster aufgeht wo man den Namen eingeben muss, ich werd versuchen das zu finden ;)

Danke schonmal
03/08/2013 20:55 Sedrika#4
Versuch es mal so:

Code:
if( g_WndMng.GetWndBase( APP_TELEPORTER ) == NULL )
{
	CWndTeleporter* pWndTeleporter = new CWndTeleporter;
	pWndTeleporter->Initialize();
}
Erst abfragen ob der teleporter bereits offen ist, wenn nicht als neue instanz initialisieren.
03/08/2013 22:36 Cartmanforlife#5
Quote:
Originally Posted by Sedrika View Post
Versuch es mal so:

Code:
if( g_WndMng.GetWndBase( APP_TELEPORTER ) == NULL )
{
	CWndTeleporter* pWndTeleporter = new CWndTeleporter;
	pWndTeleporter->Initialize();
}
Erst abfragen ob der teleporter bereits offen ist, wenn nicht als neue instanz initialisieren.
Jaaahh, super funktioniert Prima, vielen lieben Dank.

#Closerequest.
03/09/2013 02:23 xxfabbelxx#6
closed