Here is some code that acts funny, maybe I'm not using the function correctly. What it does is, sometimes it moves on its own (like the key is being pressed) and sometimes it acts like nothing is moving.
Code:
void MainLoop() //Main Game Loop
{
	switch( LOWORD(GetKeyState (VK_LEFT)) )
	{
	case 0:
		left = true;
	    break;
	}
	switch( LOWORD(GetKeyState (VK_RIGHT)) )
	{
	case 0:
		right = true;
	    break;
	}
	switch( LOWORD(GetKeyState (VK_UP)) )
	{
	case 0:
		up = true;
	    break;
	}
	switch( LOWORD(GetKeyState (VK_DOWN)) )
	{
	case 0:
		down = true;
	    break;
	}
	
	UpdateShip(left, right, up, down);

	left = false; right = false; up = false; down = false;
}