Du bist nicht angemeldet.

Werbeanzeige

Faule Socke

Community-Fossil

Beiträge: 1 917

Wohnort: Schreibtischstuhl

  • Private Nachricht senden

11

05.03.2008, 23:09

Wenn ich das richtig sehe, gibt die Funktion 0 zurück, wenn die Taste nicht gedrückt ist. Ansonsten gibt se halt was anderes zurück. Das problem scheint hier wohl kaum der Aufruf der funktion zu sein udn auch nicht die auswertung des rückgabewertes. Es kommt also nur noch eine möglichkeit in frage: ein fehler innerhalb der funktion oder ein nicht berücksichtigter rückgabewert. Bedeutet: MSDN schauen und gucken, was die funktion alles zurückgeben kann und was sie im falle eines fehlers macht.

Socke

drakon

Supermoderator

Beiträge: 6 524

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

12

05.03.2008, 23:12

Na, also ich habe die Funktion mit dem VK_RETURN mal bei mir geteste und es funktioniert ganz normal, wie es funktionieren soll.

TrommlBomml

Community-Fossil

Beiträge: 2 141

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

13

06.03.2008, 09:44

es muss so weit ich weiss kleiner 0 sein. probier das mal

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

14

06.03.2008, 10:36

Wieso liest eigentlich niemand den Eintrag in der msdn über die Funktion? Da steht doch alles...

Zitat von »"msdn2"«


Return Value

If the function succeeds, the return value specifies whether the key was pressed since the last call to GetAsyncKeyState, and whether the key is currently up or down. If the most significant bit is set, the key is down, and if the least significant bit is set, the key was pressed after the previous call to GetAsyncKeyState. However, you should not rely on this last behavior; for more information, see the Remarks.

Windows NT/2000/XP: The return value is zero for the following cases:

* The current desktop is not the active desktop
* The foreground thread belongs to another process and the desktop does not allow the hook or the journal record.

Windows 95/98/Me: The return value is the global asynchronous key state for each virtual key. The system does not check which thread has the keyboard focus.

Windows 95/98/Me: Windows 95 does not support the left- and right-distinguishing constants. If you call GetAsyncKeyState with these constants, the return value is zero.
@D13_Dreinig

David Scherfgen

Administrator

Beiträge: 10 288

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

15

06.03.2008, 12:25

Zitat von »"TrommlBomml"«

es muss so weit ich weiss kleiner 0 sein. probier das mal

Da alle Integer != 0 als true gewertet werden, ist es egal.
Mein Verdacht ist eher, dass da sowas im Code steht wie Kalero geschrieben hat, nämlich dass beim linken Teil der Bedingung das = mit dem == vertauscht wurde.

Faule Socke

Community-Fossil

Beiträge: 1 917

Wohnort: Schreibtischstuhl

  • Private Nachricht senden

16

06.03.2008, 17:06

David hat alles beschrieben mit seinem auszug. Jetzt heisst es den & operator zu verwenden, ich denke, der rest ist kein problem...

C-/C++-Quelltext

1
2
3
4
5
int iResult = GetAsyncKeyState(VK_RETURN);
if(Position == 15 && iResult >> 31)
{
// Taste gedrückt und Position ist gleich 15...

}


Ich mag "spezielle" lösungen.... xD

Socke

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

17

06.03.2008, 17:30

Zitat von »"Faule Socke"«


Ich mag "spezielle" lösungen.... xD


Genau, aber wenn diese "speziellen" Lösungen an der, hier so oft hochgepriesenen, Portabilität kranken, sollte man doch lieber auf die bewärte mainstream Lösung zurückgreifen.
@D13_Dreinig

SilentDragon

Alter Hase

  • »SilentDragon« ist der Autor dieses Themas

Beiträge: 532

Wohnort: Köln

Beruf: Student

  • Private Nachricht senden

18

06.03.2008, 20:05

Danke Leute :D

Hab alles ausprobiert ^^

:arrow: sockes hat funktioniert (sonst aber keine Lösung)

naja aber das Problem is gelöst (selbst wenn ich nicht verstanden habe wiso :lol: )
...

19

06.03.2008, 21:39

http://msdn2.microsoft.com/en-us/library/ms646293.aspx
http://msdn2.microsoft.com/en-us/library/ms645540(VS.85).aspx
=>

C-/C++-Quelltext

1
::GetAsyncKeyState(VK_RETURN)

http://msdn2.microsoft.com/en-us/library/ms646268(VS.85).aspx
=>

C-/C++-Quelltext

1
(::GetAsyncKeyState(VK_RETURN) & 0x8000)

deine Vorgabe:

C-/C++-Quelltext

1
2
if (position == 15 && ::GetAsyncKeyState(VK_RETURN) & 0x8000)
{ /* TODO: Your Code! */ }

oft findet man aber auch:

C-/C++-Quelltext

1
::GetAsyncKeyState(VK_RETURN) < 0

=>

C-/C++-Quelltext

1
2
if (position == 15 && ::GetAsyncKeyState(VK_RETURN) < 0)
{ /* TODO: Your Code! */ }


So wären die beiden Lösungen ;)
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

Werbeanzeige