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

1

19.05.2008, 22:32

[DirectX] Buttons

hi,

ich bin dabei tetris in 3D zu programmieren und habn start und stop button programmiert.
Ich bin mir aber sicher, dass das so wie ich das gemacht habe, nicht die eleganteste lösung ist^^

Ich habe das jetzt so gemacht.
Ich habe die größe des backbuffers auf die größe des anwendungbereich des fensters (ohne titelleiste und so) mit getclientrect gesetzt.
Dann habe ich ein rhw viereck erstellt.
Und mithilfe der windows message WM_LBUTTONDOWN und lparam habe ich den button eingegrenzt.

Hat da jemand evtl ne bessere idee ??

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

2

19.05.2008, 22:35

Re: [DirectX] Buttons

Zitat von »"RebornX"«


Und mithilfe der windows message WM_LBUTTONDOWN und lparam habe ich den button eingegrenzt.


Was meinst du damit? - Zeig mal ein wenig Code oder zumindest Pseudocode..

3

19.05.2008, 22:38

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
case WM_LBUTTONDOWN:
        if (LOWORD(lParam)>= 690 && LOWORD(lParam) <= 820 && HIWORD(lParam) >=650  && HIWORD(lParam) <= 700)
        {
            MessageBox(hWnd, "Start", "Start", MB_ICONINFORMATION | MB_OK | MB_DEFBUTTON1);
        }
        if (LOWORD(lParam)>= 860 && LOWORD(lParam) <= 990 && HIWORD(lParam) >=650  && HIWORD(lParam) <= 700)
        {
            MessageBox(hWnd, "Stop", "Stop", MB_ICONINFORMATION | MB_OK | MB_DEFBUTTON1);
        }

so in etwa ^^

// Ach verdammt ... der thread gehört in ein anderes unterforum sry...
kann das einer verschieb en :oops:

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

4

19.05.2008, 22:51

Aso. Naja. Das ist so ziemlich optimierungsbedüftig. ;)

Oder willst du jeden Button so schreiben? :)

Du könntest mal mit einer Buttonklasse anfangen, wo du hald Grösse, Text usw. einstellen kannst. Und dort kannst du z.B in der Update Funktion überprüfen, ob der Button gerade gedrückt wurde. Oder auch eine externe Verwarltung der Buttons machen und dann einfach einfmal z.B CheckButtons (MousePosition) aufrufen, wenn die Maustaste gedrückt wurde.

5

19.05.2008, 23:00

Zitat von »"drakon"«

Aso. Naja. Das ist so ziemlich optimierungsbedüftig. ;)

Oder willst du jeden Button so schreiben? :)

Du könntest mal mit einer Buttonklasse anfangen, wo du hald Grösse, Text usw. einstellen kannst. Und dort kannst du z.B in der Update Funktion überprüfen, ob der Button gerade gedrückt wurde. Oder auch eine externe Verwarltung der Buttons machen und dann einfach einfmal z.B CheckButtons (MousePosition) aufrufen, wenn die Maustaste gedrückt wurde.


Nene ich weiß das das ein schlechter weg ist ^^
Deswegen frage ich ja ^^ Was ist der übliche Weg in DirectX buttons zu erstellen? bzw mausposition abfragen ect..

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

6

19.05.2008, 23:06

CEGUIbenutzen. :D

Hmm. Ich würde sagen, da macht jeder, wie will. Wenn es sich auf ein paar Button beschränkt spricht ja nix gegen eine eigene Buttonklasse, aber wenn es komplexer wird, schreibst du dir entweder selber ein kleines GUI System, oder nutzt CEGUI..

Werbeanzeige