JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.phpMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Selbst erstellte Menüs mit DX funzen nich...

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
VerruecktesHuhn
Super JLI'ler



Anmeldedatum: 30.07.2002
Beiträge: 492
Wohnort: Stuttgart
Medaillen: Keine

BeitragVerfasst am: 05.12.2002, 19:46    Titel: Selbst erstellte Menüs mit DX funzen nich... Antworten mit Zitat

... und ich hab keine Ahnung warum!
Also, ich hab ne Buttonklasse geschrieben
Code:

class Button
{

/*
Public:
*/
public:

//Button size:
RECTButtonRect;

//GS to change to:
DWORDdwGS;

//The buttons function:
intButtonsFunction(int iGS);


/*
Constructor and destructor:
*/

//Constructor:
Button();

//Destructor:
~Button();

//End
};

Also im Grunde nur das Rechteck, dass der Button einnimmt, und dann die funktion, die den Gamestate ändert.

Dann gibs noch ne Menüklasse, in der eigentlich nur das Image des Menüs und die Buttons sind:
Code:

/*

  Menu class:

*/
class Menu
{

/*
Public:
*/
public:

//Buttons:
ButtonButtons[16];

//Image:
LPDIRECTDRAWSURFACE7lpDDSurfImage;

/*
Constructor and destructor:
*/

//Constructor:
Menu();
Menu(int iButtons);

//Destructor:
~Menu();

//The end:
};


So, dann wird bei der Inputbehanlung durch folgenden Code überprüft ob der User auf nen Button gedrückt hat:
Code:

case DIMOFS_BUTTON0:
{
if(Input.doMouseData.dwData)
{
for(int i = NULL; i < 15; i++)
{
int iGS;
iGS = 1000 + i;
if(iGamestate == iGS)
{
for(int ii = NULL; ii < 16; ii++)
{
if(Menus[i].Buttons[ii].ButtonRect.bottom >= iMouseX
&& Menus[i].Buttons[ii].ButtonRect.top <= iMouseX
&& Menus[i].Buttons[ii].ButtonRect.right >= iMouseY
&& Menus[i].Buttons[ii].ButtonRect.left <= iMouseY)
{
iGamestate = Menus[i].Buttons[ii].ButtonsFunction(iGamestate);
}

Menus ist ein Feld von Menüs. Wird erst mal geprüft welcher Gamestate grade dran ist und dann die Knöpfe des entsprechenden Menüs daraufhin untersucht, ob die Mauskoordinaten sich dadrin befinden.

Jetz starte ich das Programm und drücke auf den Knopf und nichts passiert.

Ich hab absolut keinen Plan woran das liegen könnte, deswegen hab ich auch so viel code gepostet, sorry.

Hoffe ihr könnt mir helfen!

PS:
Ich weiß das die Inputabfrage da ein bisschen umständlich ist, die ist aber noch im Umbau.


Cu,
VH
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 05.12.2002, 20:13    Titel: Antworten mit Zitat

Du überprüfst ::right und ::left mit der Y-Koordinate und ::bottom und ::top mit der X-Koordinate!
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
VerruecktesHuhn
Super JLI'ler



Anmeldedatum: 30.07.2002
Beiträge: 492
Wohnort: Stuttgart
Medaillen: Keine

BeitragVerfasst am: 05.12.2002, 20:31    Titel: Antworten mit Zitat

Danke, klappt aber immer noch nicht!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Kampfhund
Super JLI'ler


Alter: 41
Anmeldedatum: 20.07.2002
Beiträge: 408

Medaillen: Keine

BeitragVerfasst am: 05.12.2002, 21:10    Titel: Antworten mit Zitat

debug das doch mal und guck, ob in iMouseX und Y die richtigen werte drinnstehen und guck auch mal, ob die buttons an der richtigen position liegen und die Methode ButtonFunction() den richtigen wert zurückliefert.

beim Debuggen müsstest du den fehler doch eigentlich finden.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
VerruecktesHuhn
Super JLI'ler



Anmeldedatum: 30.07.2002
Beiträge: 492
Wohnort: Stuttgart
Medaillen: Keine

BeitragVerfasst am: 06.12.2002, 14:25    Titel: Antworten mit Zitat

Also:
Ich hab jetzt mal folgendes versucht:
Ich hab eingestellt, dass der Gamestate beim drücken der Taste "A" gewechselt wird (Mouse behandlung hab ich weggelassen). Dann hab ich kopiliert, gestartet, "A" gedrückt und .... .... (Trommelwirbel) es hat geklappt! (Posaunen und Konfetti, usw...)
Dann hab ich mal den Cooperativelevel der Mouse auf "Exclusive" gestellt, hab ein bildchen gemalt, und lass das Bildchen dann immer auf die Mouseposition malen. Dann hab ich das ganze kopiliert (nun wieder mit Mousebehandlung) und die Maus bewegt und ... ... (wieder Trommelwirbel) nichts ist Passiert (Ein "Ooohhh...")! Auch das Bildchen hat sich nicht bewegt!
Wenn ich nun allerdings auf irgendne Taste der Tastatur drücke, bewegt sich das Bildchen nach rechts.
Jetzt hab ich mal vor die Tastaturabfrage ein "//" gesetzt und nochmal versucht, mit dem selben Ergebniss! Obwohl die Tastatur nicht abgefragt wird, verschiebt sich das Kästchen beim drücken einer Taste der Tastatur!

Habt ihr ne Ahnung?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
VerruecktesHuhn
Super JLI'ler



Anmeldedatum: 30.07.2002
Beiträge: 492
Wohnort: Stuttgart
Medaillen: Keine

BeitragVerfasst am: 06.12.2002, 14:29    Titel: Antworten mit Zitat

Ich hab jetzt den Cooperativelevel wieder auf "NonExclusive" gestellt, dass Bildchen und so aber gelassen.
Aber:
Egal wie ich die maus bewege, ob nach links oder rechts, ob nach oben oder unten, das Bildchen bewegt sich nur nach rechts!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum