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

soxx

Frischling

  • »soxx« ist der Autor dieses Themas

Beiträge: 53

Wohnort: Klagenfurt

  • Private Nachricht senden

1

23.03.2006, 09:45

Direct Input - Fenstermodus

Hallo !

ich habe folgendes Problem:
ich habe ein programm, dass im fenstermodus betrieben wird -> nun switche ich mit ALT+TAB zu einem anderen Fenster. Wenn ich wieder zum ausgangsfenster zurückswitche hat die betätigung der maus keine auswirkungen mehr.

habe es so implementiert, dass ich die kamera mit der maus steuere (rotation etc.).

wenn ich die bei direct input so initialisiere:
if( FAILED(m_DI_Mouse->SetCooperativeLevel(g_hWindow, DISCL_NONEXCLUSIVE | DISCL_BACKGROUND)) )
return FALSE;

habe ich kein problem. nur dass ich einen läsigen nebeneffekt habe -> wenn ich in einem anderen fenster mit der maus was mache, ändert sich auch was in dem directx fenster.

=> deswegen so implementiert:
if( FAILED(m_DI_Mouse->SetCooperativeLevel(g_hWindow, DISCL_NONEXCLUSIVE | DISCL_FOREGROUND)) )
return FALSE;

wobei ich aber jetzt bei einem fensterwechsel keine reaktion auf die maus habe....

"das system kann vom angegeben system nicht lesen"

diese meldung bekomme ich, wenn ich im debug - modus an dieser stelle bin:
HRESULT hr = m_DI_Mouse->GetDeviceState( sizeof(DIMOUSESTATE2), &m_MouseState );

hoffe, jemand kann mir helfen.

mfg
soxx

Steven77

Alter Hase

Beiträge: 515

Wohnort: Münster - Gievenbeach

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

23.03.2006, 10:05

Entweder betreibst Du DirectInput im nicht-exklusiven Modus, dann solltest Du um Dein Problem zu beheben ein Flag einbauen, was angibt, ob Deine Anwendung "aktiv" ist, also den Fokus besitzt. Dann testest Du bei jedem Frame bzw. jedem Durchlauf der Hauptschleife, ob die Anwendung die Eingabe bearbeiten soll.
Eine andere Möglichkeit ist, DirectInput im exklusiven Modus zu betreiben, jedoch musst Du die Geräte dann halt neu akquirieren, wenn sie "verloren gehen".

soxx

Frischling

  • »soxx« ist der Autor dieses Themas

Beiträge: 53

Wohnort: Klagenfurt

  • Private Nachricht senden

3

23.03.2006, 10:44

danke hat wunderbar funktioniert.

Anonymous

unregistriert

4

23.03.2006, 19:31

Frage am Rande: Wieso DirectInput?

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

5

23.03.2006, 22:45

Gegenfrage: wieso nicht DirectInput?
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Das Gurke

Community-Fossil

Beiträge: 1 996

Wohnort: Pinneberg

Beruf: Schüler

  • Private Nachricht senden

6

23.03.2006, 22:51

Weils zB mit GetAsyncKeyState auch geht? Und das viel einfacher. Oder gehts um mehr als nur Keyboard?

Edit:

Seh grad Maus :angel:

Anonymous

unregistriert

7

24.03.2006, 07:56

Nox
Weil die Win32API alles für Maus, Tastatur und Joystick hergibt was man braucht? Das sogar noch viel leichter in der bedienung und fürs coding?

Phil_GDM

Alter Hase

Beiträge: 443

Wohnort: Graz

Beruf: Student-Softwareentwicklung u. Wissensmanagement

  • Private Nachricht senden

8

24.03.2006, 14:50

Zitat von »"nix da"«

Nox
Weil die Win32API alles für Maus, Tastatur und Joystick hergibt was man braucht? Das sogar noch viel leichter in der bedienung und fürs coding?


Und wozu gibts dann DirectInput?

mfg Philipp

Anonymous

unregistriert

9

24.03.2006, 18:56

Phil_GDM
Gamepads, ForceFeedback.

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

10

24.03.2006, 22:30

... das wollte ich schon sagen.... und z.B. eine Vibrierfunktion bei Gamepads :)

Werbeanzeige