Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Volker_Neff

Treue Seele

  • »Volker_Neff« ist der Autor dieses Themas

Beiträge: 249

Wohnort: Hamburg

  • Private Nachricht senden

1

18.06.2013, 22:33

Problem mit Maus Event

Hallöchen,

ich habe heute mal wieder mit einem Fehler zu tun gehabt den ich mir nicht erklären kann.

Quellcode

1
2
3
4
1>C:\Program Files (x86)\Windows Kits\8.0\Include\um\wincon.h(52): error C2059: Syntaxfehler: 'Konstante'
1>C:\Program Files (x86)\Windows Kits\8.0\Include\um\wincon.h(52): error C2238: Unerwartete(s) Token vor ';'
1>C:\Program Files (x86)\Windows Kits\8.0\Include\um\wincon.h(54): error C2059: Syntaxfehler: 'Konstante'
1>C:\Program Files (x86)\Windows Kits\8.0\Include\um\wincon.h(54): error C2238: Unerwartete(s) Token vor ';'

Wegen diesen Fehlern wird mein Projekt nicht übersetzt.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
case WM_RBUTTONDOWN:
        {
            m_Input->MousKeyDown(Left);
        }
        case WM_RBUTTONUP:
        {
            m_Input->MousKeyUp(Left);
        }
        case WM_LBUTTONDOWN:
        {
            m_Input->MousKeyDown(Right);
        }
        case WM_LBUTTONUP:
        {
            m_Input->MousKeyUp(Right);
        }
        case WM_MOUSEMOVE:
        {
            POINT p;
            GetCursorPos(&p);
            ScreenToClient(hwnd, &p);
            m_Input->SetMousPos (p.x, p.y);
        }

Wenn ich den Teil auskommentire funktionirt es

C-/C++-Quelltext

1
2
3
4
5
6
typedef struct _SMALL_RECT {
    SHORT Left;
    SHORT Top;
    SHORT Right;
    SHORT Bottom;
} SMALL_RECT, *PSMALL_RECT;


Und hier soll der Fehler liegen, würde mich aber wundern, hat jemand eine Lösung für dieses Problem?

Volker_Neff

Treue Seele

  • »Volker_Neff« ist der Autor dieses Themas

Beiträge: 249

Wohnort: Hamburg

  • Private Nachricht senden

2

18.06.2013, 23:00

wenn ich das wüsste, ich benutze es ja garnicht

TGGC

1x Rätselkönig

Beiträge: 1 799

Beruf: Software Entwickler

  • Private Nachricht senden

3

18.06.2013, 23:12

Was soll denn diese Left und Right sein, das du an MousKeyDown uebergibst? Schonmal drueber nachgedacht, warum der Fehler genau die gleichen Bezeichner trifft?

Volker_Neff

Treue Seele

  • »Volker_Neff« ist der Autor dieses Themas

Beiträge: 249

Wohnort: Hamburg

  • Private Nachricht senden

4

19.06.2013, 07:31

Danke TGGC, das es so einfach ist hätte ich nicht gedacht :dash:

TGGC

1x Rätselkönig

Beiträge: 1 799

Beruf: Software Entwickler

  • Private Nachricht senden

5

19.06.2013, 16:32

So, zur Strafe muss du jetzt auf meine Kanal mindestens 3 Ausgaben vom Indie Stream anschauen! ;-)

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

6

19.06.2013, 16:39

Und damit hast du Grund Nummer 1 entdeckt, wieso Makros böse und zur Definition von Konstanten nicht zu verwenden sind... ;)

Volker_Neff

Treue Seele

  • »Volker_Neff« ist der Autor dieses Themas

Beiträge: 249

Wohnort: Hamburg

  • Private Nachricht senden

7

23.06.2013, 13:46

Danke noch einmal für eure Hilfe, doch wie es so ist man löst ein Problem und es entstehen zwei neue. Ich habe eine einfache Button Klasse geschrieben. Nun möchte ich abfragen ob der Button auch gedrückt wurde. So weit so gut. Ich übergebe die Mauskoordinate und habe die Buttonkoordinate. Wenn ich aber den Button in OpenGL auf X0 und Y0 Printe ist das nicht die MausPosition X0 und Y0.
Wie kann ich die Mauskoordinate so umrechnen das ich die Kolosion abfragen kann? Wenn ich jetzt auch noch den Button an eine andere Stelle Transformire stimmen die Kordinaten Kordinaten garnicht mehr was mach dann?

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

8

23.06.2013, 18:25

Deine Mauskoordinaten liegen in einem Rechteck. Dieses Rechteck wird durch dein Fenster bestimmt. Oben links ist (0, 0) und unten rechts ist (Fensterbreite, Fensterhöhe). In diesem Fenster liegt jetzt dein Button. Wir gehen mal von einem Rechteck aus. Die obere linke Ecke des Buttons ist dann an der Position (x, y). Diese Koordinate kennst du, da du dem Button ja sagst wo er sich befindet. Dein Button hat eine Breite und eine Höhe. Dadurch kannst du dir die untere rechte Ecke des Buttons ausrechnen. Jetzt mache ich mal einfach ein dummes Beispiel:
Fensterbreite: 800px,
Fensterhöhe: 600px,
Buttonposition-X: 32,
Buttonposition-Y: 40,
Buttonbreite: 128px,
Buttonhöhe: 48px,
Mausposition-X: 50px,
Mausposition-Y: 60px

Du willst jetzt wissen, ob sich die Maus auf dem Button befindet. Mal dir das ganze mit den Werten mal auf und überleg dir wie man da auf die Lösung kommt. Als Hinweis, ja die Maus befindet sich in diesem Beispiel auf dem Button.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Volker_Neff

Treue Seele

  • »Volker_Neff« ist der Autor dieses Themas

Beiträge: 249

Wohnort: Hamburg

  • Private Nachricht senden

9

23.06.2013, 19:07

soweit habe ich das verstanden und wollte es umsetzen. Jetzt benutze ich opengl und wenn ich dort ein rechteck , bestehend aus zwei dreiecken, auf die position 0,0 setze dann ist dises mittig. Daraus ergeben sich zwei probleme, das erste ist das ich nicht mehr weiß wo mein rechteck ist, das zweite ist wie groß es ist. Wenn ich den butten mit einer größe von 1*1 setze sind das ja nich 1*1 pixel. Ich hoffe ich konnte mein problem erklären so das ihr mir helfen könnt.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

10

23.06.2013, 19:37

Du könntest einerseits mit einem Strahl arbeiten. Du schießt dabei einfach einen Strahl (Ray) von der Mausposition in Kamerarichtung. Jetzt guckst du ob dieser Strahl einen Button schneidet. Das ganze wird oft als Picking bezeichnet. Da sollte es bei Google einiges zu geben. Ansonsten könntest du natürlich auch von Weltkoordinaten in Fensterkoordinaten umrechnen. Das wird du vermutlich eh tun müssen, da man einen Button ja eigentlich mit Fensterkoordinaten positionieren möchte. Außerdem soll sich ein Button ja immer an der selben stelle befinden.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Werbeanzeige