---
title: "khibit problem..."
type: "forum-thread"
url: "https://www.webforum.nu/amne/c-cpp/55245-khibit-problem"
topic: "C/C++"
topic_url: "https://www.webforum.nu/amne/c-cpp"
author: "Gaski"
published: "2002-10-06T14:10:04.000Z"
updated: "2002-10-09T16:12:30.000Z"
replies: 10
views: 289
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/c-cpp/55245-khibit-problem"
---

# khibit problem...

## #1 — Gaski, 2002-10-06T14:10Z

Har i mitt fagra win program försökt lägga till en knapptrycks avkännare :)

Dvs i det eviga lopen i WinMain funktionen har jag lagt till följande kod:

```
        if(kbhit()) {
            // Hämta nedtryckt tangent
            int key = getch();
            // Kolla om tangenten är 32(mellanslag)
            if(key == 32) {

				if(x < 1)
					xvel = 1;
				if(x > 139)
					xvel = -1;
				if(y < 1)
					yvel = 1;
				if(y > 392)
					yvel = -1;
	
				x += xvel;
				y += yvel;
             }
        }
```

Men ingenting händer när jag trycker på mellanslag, om jag tar bort alla knapp-if-satser och bara har x och y satserna kvar kommer objektet att röra på sig fint och studsa mot kanterna men meningen är att jag ska kunna styra det med mellanslagstangenten.

Varför fungerar inte ovanstående kod?

Permalänk: https://www.webforum.nu/p/55245

## #2 — Sang-drax, 2002-10-06T14:42Z

kbhit() är en konsollfunktion; den fungerar ej i GUI-apps.

Titta närmare på WM_KEYDOWN

Permalänk: https://www.webforum.nu/p/811979

## #3 — Gaski, 2002-10-06T14:53Z

Antar att jag ska använda den i switch-satsen i WindowProc funktionen men vad ska jag skriva där? Hur gör jag för att kolla vilken knapp det är osv...

Permalänk: https://www.webforum.nu/p/811983

## #4 — Marcus E, 2002-10-06T16:17Z

T.ex. så här:

```
switch(uMsg)
{
case WM_KEYDOWN:

int key = (int)wParam;
if(key == VK_SPACE)
{
...
}

break;
}
```

Läs i dokumentationen för WM_KEYDOWN och virtual-key codes.

Permalänk: https://www.webforum.nu/p/812015

## #5 — Gaski, 2002-10-06T17:37Z

Kör följande kod:

```
		case WM_KEYDOWN:
		{
			int key = (int)wparam;
			switch(key)
			{
			case VK_UP:
				{
					xvel = 0;
					yvel = 1;
				}
		        case VK_DOWN:
				{
					xvel = 0;
					yvel = -1;
				}
				case VK_LEFT:
				{
					xvel = -1;
					yvel = 0;
				}
		        case VK_RIGHT:
				{
					xvel = 1;
					yvel = 0;
				}
			}

			x += xvel;
			y += yvel;

			return(0);
		} break;
```

Men den väljer alltid VK_RIGHT, varför då?

Dokumentation? Var finns den?

Permalänk: https://www.webforum.nu/p/812130

## #6 — Marcus E, 2002-10-06T17:54Z

Dokumentationen följde med när du installerade.
Den kan också hittas någonstans på msdn.microsoft.com

Ditt problem är att du inte använder break efter varje case-sats.

```
				case VK_UP:
				{
					xvel = 0;
					yvel = 1;
				}
				[b]break;[/b]
			        case VK_DOWN:
```

Permalänk: https://www.webforum.nu/p/812147

## #7 — Alpha II, 2002-10-08T14:39Z

Gör du ett spel? (eftersom du frågar om directx i en annan tråd)
Då kan du ju använda DirectInput eller skapa en array med 255 bools.

Sen lägger du till i WM_KEYDOWN om arrayen heter keys:
keys\[wParam\] := TRUE;

och tvärtom i WM_KEYUP

Permalänk: https://www.webforum.nu/p/813645

## #8 — Alpha II, 2002-10-08T14:41Z

Sen kan du varje ruta kontrollera om tex pilupp tangenten är nedtryckt genom att skriva

if keys\[VK_UP\] 
{
  //kod
}

Permalänk: https://www.webforum.nu/p/813646

## #9 — Gaski, 2002-10-08T20:18Z

Försöker lära mig att göra spel :)
Hur menar du med directInput, har försökt lite med koden ovan men den kan ju bara hantera en tangent i taget, vill hantera minst två i taget vilket directInput klarar. Har du nåt enkelt exempel?

Permalänk: https://www.webforum.nu/p/813930

## #10 — Alpha II, 2002-10-09T07:58Z

Hur menar du?
Om du har en array kan du hantera att flera knappar trycks samtidigt.

Du kontrollerar inte om knapparna trycks ner i WM_KEYDOWN utan i spel loopen.

Hur DirectINput fungerar vet jag inte eftersom jag bara har använt DX med DelphiX i delphi och det är inte riktigt samma sak

Permalänk: https://www.webforum.nu/p/814110

## #11 — Alpha II, 2002-10-09T16:12Z

PÅ <http://www.gamedev.net> finns mycket information om spelprogrammering och ett bra forum :) du får aldrig några bra svar på wf om spelproframmering

Permalänk: https://www.webforum.nu/p/814515

---

Tråden på webben: https://www.webforum.nu/amne/c-cpp/55245-khibit-problem
