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

08.02.2009, 17:03

Managed DirectX - Maussteuerung

Hallo,

Ich Programmiere mit C++/CLI und hab auch schon ein paar sachen mit MDX hinbekommen.

Meine frage ist nun:

Man kann ja die Absoluten Mauswerte fangen oder relativ zum letzten frame. Wenn ich aber jetzt die Absoluten werte fange kommt ein doch sehr unbrauchbarer wert raus. Zum Beispiel die X Achse hat links oben 1,236458E+09 und wenn ich mit dem Cursor nach rechts oben fahre kommt der wert 1,236459E+09!?!

Oder muss man den wert erst irgentwie behandeln das man brauchbare Koordinaten bekommt

2

09.02.2009, 10:30

hat das probelm noch keiner, oder allgemein nur ich? :(

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

3

09.02.2009, 10:42

vielleicht solltest du uns mal zeigen _wie_ du deine mauswerte fangst (wo kommen die her? verwendest du Direct Input oder WinAPI oder .NET oder was genau!?)

4

09.02.2009, 12:47

Ich programmiere mit C++/CLI (.NET) und DirectInput(DirectX 9.c).

Das fangen der werte sieht so aus....

Ich erstelle das Device und einige Variablen die die werte halten:

C-/C++-Quelltext

1
2
3
    Single Mouse_X;
    Single Mouse_Y;
    DirectInput::Device ^mDevice;


Das Device Initialisieren:

C-/C++-Quelltext

1
2
    mDevice = gcnew DirectInput::Device(SystemGuid::Mouse);
    mDevice->Properties->AxisModeAbsolute = true;


und dann mit ner eigenen Methode die Werte fangen:

C-/C++-Quelltext

1
2
3
4
5
6
public: void TestMouseMove(){
    mDevice->Acquire();
    mState = mDevice->CurrentMouseState;    
    Mouse_X = mState->X;
    Mouse_Y = mState->Y;    
}


und dann ausgeben (?!?)

C-/C++-Quelltext

1
MessageBox::Show("X: "+Mouse_X.ToString()+"\nY: "+Mouse_Y.ToString());


Das mit der MessageBox ist natürlich Schwachsinn weil bei jedem Frame die Methode "TestMouseMove()" ausgeführt wird. Die Werte Mouse_X und Mouse_Y brauch ich Global weil mehrere Methoden drauf zugreifen sollen.

Bösewicht

unregistriert

5

09.02.2009, 14:10

Ich weiß nicht, aber die + gehören egtl nicht rein oder?

Zitat

MessageBox::Show("X: "+Mouse_X.ToString()+"\nY: "+Mouse_Y.ToString());


EDIT: (Zumindest hab ich sowas noch nie gesehen^^)

6

09.02.2009, 14:38

da werden die Strings verknüpft. Das geht auch mit

C-/C++-Quelltext

1
String ^mStr = String::Concat(bla, bla, bla);


aber so

C-/C++-Quelltext

1
MessageBox::Show("X: "+Mouse_X.ToString()+"\nY: "+Mouse_Y.ToString()); 


gehts schneller. Ich wollte ja auch nur demonstrieren wie ich die werte dann wieder verarbeite(oder so)...

7

09.02.2009, 14:39

So schreibts man beispielsweise in JavaScript, aber in C++ doch nicht. :?:
MfG Shiver!

„Ideen sind nur Ausgangspunkte. Um zu wissen, was man zeichnen will, muss man zu zeichnen anfangen.“ Pablo Picasso

Ibot Development - Mein Weg zum eigenen 2D RPG

8

09.02.2009, 14:40

warum nicht??

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

9

09.02.2009, 14:41

Zitat von »"Shiver"«

So schreibts man beispielsweise in JavaScript, aber in C++ doch nicht. :?:


kla wenn der +operator für diese klasse dementsprechend überladen worden ist. std::string geht das auch.

10

09.02.2009, 14:41

Das geht?

Wusste ich gar nicht...
MfG Shiver!

„Ideen sind nur Ausgangspunkte. Um zu wissen, was man zeichnen will, muss man zu zeichnen anfangen.“ Pablo Picasso

Ibot Development - Mein Weg zum eigenen 2D RPG

Werbeanzeige