Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
21.11.2001, 09:29
Nicemice
Moderator


Hi ich will meinem VGUI Button eine Funktion in meiner cl.dll zuordnen, so daß wenn man den Button drückt, diese Funktion aufgerufen wird.

Wie macht man das ?

--

www.d3opencoop.com - A Doom3 Cooperative Mod

zum Seitenanfang zum Seitenende Profil || Suche
001
21.11.2001, 14:18
thinktank



Also ich würde einfach einen Handler schreiben, bei dem ein Konstruktor einen Funktionszeiger void (*func)(void) z.B. (Ich hoffe das ist richtig) las Parameter hat. Und dann den Funktionszeiger in einem anderen Zeiger speicher und dann die Funktion in actionPerformed aufrufen .

Alles klar ?

--

zum Seitenanfang zum Seitenende Profil || Suche
002
21.11.2001, 19:55
Nicemice
Moderator


mmh, ich weiß nicht genau, was du mit Handler meinst.
Ich tippe mal ein Object (welcher Typ ?) das in seinem Konstruktor meine Funktion aufrufen soll ?!

Aber für was brauche ich dann actionPerformed ?

--

www.d3opencoop.com - A Doom3 Cooperative Mod

zum Seitenanfang zum Seitenende Profil || Suche
003
21.11.2001, 20:14
Retro



Hmm, ganz sicher das du es nicht eher in der mp.dll brauchst? Dann geht das standartmäßig mit ner Konsolen-Message.Quellcode:m_pIrgeneinButton->addActionSignal( new CMenuHandler_StringCommand("moep") ); Und on der mp.dll gehste in die Client.cpp und suchst mal kurz nach "Impulse 101" dort führste die Reihe einfach fort ;)

Natürlich nur wenn das ganze auch in der mp.dll gebraucht wird.

--

shielding people from their own stupidity is an evolutionary step backwards anyway.

/* God is dead!............Nietzsche */
/* Nietzsche is dead!......God */
/* Nietzsche is God!.......The Dead */

zum Seitenanfang zum Seitenende Profil || Suche
004
21.11.2001, 20:21
Nicemice
Moderator


Ja, sowas brauch ich auch. :-) Aber eben nicht nur.

--

www.d3opencoop.com - A Doom3 Cooperative Mod

zum Seitenanfang zum Seitenende Profil || Suche
005
21.11.2001, 20:25
Retro



Aber eben nicht nur... was will uns dieser Satz sagen?:)

Erläutere mal etwas genauer was du haben willst? Eine Routine in der cl.dll auslösen?

--

shielding people from their own stupidity is an evolutionary step backwards anyway.

/* God is dead!............Nietzsche */
/* Nietzsche is dead!......God */
/* Nietzsche is God!.......The Dead */

zum Seitenanfang zum Seitenende Profil || Suche
006
21.11.2001, 21:56
thinktank



Jetzt bin ich aber auch verwirrt :) .

--

zum Seitenanfang zum Seitenende Profil || Suche
007
21.11.2001, 22:22
Creeper



Also vor dem Prob steh ich auch gerade. Er will, dass wenn man auf einen Knopf drückt, das er dann eine Funktion ausführt.

@thinktank: Erklär das bitte mal genauer. Über einen neuen Handler hatte ich nämlich auch schon nachgedacht.

@nicemice: Ich habs jetzt so gemacht, dass ich in einer Update-Funktion, die jedes Frame aufgerufen wird(siehe Scoreboard), den Status meiner Knöofe checke und wenn einer active ist, dann lass ich ihn meine funktion ausführen. Aber ein neuer Handler wär besser.

Wie übergebe ich denn als Parameter eine ganze Funktion ?

--

Head Coder:Sudden-Impact

Listen to CKY you fuCKYrs http://www.ckymusic.com

zum Seitenanfang zum Seitenende Profil || Suche
008
21.11.2001, 22:27
thinktank



Nee nicht gleich die ganze Funktion :) , nur den Funktionszeiger !

void func(void (*afunc)(int number));

z.B. ist eine Funktion die eine(n) Funktion(-szeiger) mit dem Parameter int number als Parameter hat .

Also in der Praxis

void secondfunc(int number)
{
cout<<number;
}

func(secondfunc);

// Hey Kriz und so checkt das mal auf Richtigkeit :)
// Oder schau mal im Forum unter Funktionszeigern nach

--

zum Seitenanfang zum Seitenende Profil || Suche
009
21.11.2001, 23:18
Nicemice
Moderator


Also, dann erläuter ich mal genauer, was ich machen will.
Der Server schickt dem Client Missionen. Diese werden in einer Liste (clientside gespreichert). Der Client kann via VGUI Menu durch die einzelnen Missionen durchschalten (Buttons 'Next Mission', 'Prev. Mission'). Wenn er sich eine Mission ausgesucht hat (Button 'Accept Mission') wird die MissionID der Mission an den Server geschickt.

Bei meiner Frage handelte es sich um die Buttons 'Next Mission', 'Prev.Mission', die ja eine rein Client seitige Funktion ausführen sollen, nämlich die nächste/vorherige Mission in der Liste als Vgui Text darstellen und den 'Accept Mission' Button aktualisieren.

--

www.d3opencoop.com - A Doom3 Cooperative Mod

zum Seitenanfang zum Seitenende Profil || Suche
010
21.11.2001, 23:31
Creeper



hier http://www.thewall.de/ThWboard/showtopic.php3?threadid=19572&time=1006377761

--

Head Coder:Sudden-Impact

Listen to CKY you fuCKYrs http://www.ckymusic.com

zum Seitenanfang zum Seitenende Profil || Suche
011
24.11.2001, 17:53
Nicemice
Moderator


Hi,
So ich glaub ich hab jetzt eine recht elegante Lösung gefunden:
Ich hab mir nen neuen Handler geschrieben, die abhängig von einem 'int'
Funktionen aus meinem VGUI Menu aufruft.

--

www.d3opencoop.com - A Doom3 Cooperative Mod

zum Seitenanfang zum Seitenende Profil || Suche