DirectX Mouseinput



  • hallo ihe lieben :),

    ich habe ein kleines problem mit dem mousebutton input. undzwar wird der mousebutton immer nur als gedrückt behandelt, wenn sich die maus bewegt, ich brauche ihn aber auch , wenn sich die maus nicht bewegt. mein code sieht folgendermaßen aus :

    LRESULT TestApp::MsgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
    {
    	//LEFT KEY
    	LeftMouseButton.WasDown = LeftMouseButton.IsDown;
    	LeftMouseButton.IsDown = false;
    	LeftMouseButton.IsReleased = false;
    	//
    
    	//RIGHT KEY
    	RightMouseButton.WasDown = RightMouseButton.IsDown;
    	RightMouseButton.IsDown = false;
    	RightMouseButton.IsReleased = false;
    	//
    
    	MouseMoved = false;
    
    	switch (msg)
    	{
    	case WM_DESTROY:
    		PostQuitMessage(0);
    		return 0;
    
    	case WM_MOUSEMOVE:
    		GetCursorPos(&curserPos);
    		MouseMoved = true;
    
    	case WM_KEYDOWN:
    		switch (wParam)
    		{
    			//F1 KEY
    		case VK_F1:
    			m_bHandleDeviceLost = !m_bHandleDeviceLost;
    			return 0;
    			break;
    
    			//F2 KEY
    		case VK_F2:
    			CameraPos = D3DXVECTOR3(0.0f, 0.0f, -6.0f);
    			CameraTarget = D3DXVECTOR3(0.0f, -5.0f, 1.0f);
    			break;
    
    			//F11 KEY
    		case VK_F11:
    			PostQuitMessage(0);
    			break;
    
    			//MULTIPLY KEY
    		case VK_MULTIPLY:
    			m_pDevice3D->SetRenderState(D3DRS_FILLMODE, D3DFILL_WIREFRAME);
    			break;
    
    			//DIVIDE KEY
    		case VK_DIVIDE:
    			if (SwitchState(lighted))
    				m_pDevice3D->SetRenderState(D3DRS_LIGHTING, false);
    			else
    				m_pDevice3D->SetRenderState(D3DRS_LIGHTING, true);
    			break;
    
    			//ADD KEY
    		case VK_ADD:
    			CameraPos.y += 0.2f;
    			CameraTarget.y += 0.2f;
    			break;
    
    			//MINUS KEY
    		case VK_SUBTRACT:
    			CameraPos.y -= 0.2f;
    			CameraTarget.y -= 0.2f;
    			break;
    
    			//UP KEY
    		case VK_UP:
    			CameraPos.z += 0.2f;
    			CameraTarget.z += 0.2f;
    			break;
    
    			//DOWN KEY
    		case VK_DOWN:
    			CameraPos.z -= 0.2f;
    			CameraTarget.z -= 0.2f;
    			break;
    
    			//RIGHT KEY
    		case VK_RIGHT:
    			CameraPos.x += 0.2f;
    			CameraTarget.x += 0.2f;
    			break;
    
    			//LEFT KEY
    		case VK_LEFT:
    			CameraPos.x -= 0.2f;
    			CameraTarget.x -= 0.2f;
    			break;
    
    			//NUMPAD1 KEY
    		case VK_NUMPAD1:
    			lantern1->SetGlowingState(false, d3dColors::Green, d3dColors::Green, m_pDevice3D);
    			lantern2->SetGlowingState(false, d3dColors::Green, d3dColors::Green, m_pDevice3D);
    			lantern3->SetGlowingState(false, d3dColors::Green, d3dColors::Green, m_pDevice3D);
    			break;
    
    			//LEFT MOUSE BUTTON
    		case VK_LBUTTON:
    			LeftMouseButton.IsDown = true;
    			break;
    
    			//NUMPAD1 KEY
    		case LK_E:
    			SwitchState(SystemCls->active);
    			break;
    
    		//	//NUMPAD1 KEY
    		case VK_NUMPAD8:
    			if (SystemCls->active)
    				SystemCls->InfoOutSprite->SetPosition((SystemCls->InfoOutSprite->GetPosition(*"x") + 10), (SystemCls->InfoOutSprite->GetPosition(*"y") + 10), (SystemCls->InfoOutSprite->GetPosition(*"z")));
    			break;
    		}
    		if (LeftMouseButton.IsDown != LeftMouseButton.WasDown && LeftMouseButton.WasDown == true)
    			LeftMouseButton.IsReleased = true;
    		if (RightMouseButton.IsDown != RightMouseButton.WasDown && RightMouseButton.WasDown == true)
    			RightMouseButton.IsReleased = true;
    		return 0;
    	}
    	LeftMouseButton.IsDown = false;
    	if (LeftMouseButton.IsDown != LeftMouseButton.WasDown && LeftMouseButton.WasDown == true)
    		LeftMouseButton.IsReleased = true;
    	if (RightMouseButton.IsDown != RightMouseButton.WasDown && RightMouseButton.WasDown == true)
    		RightMouseButton.IsReleased = true;
    	return DefWindowProc(hwnd, msg, wParam, lParam);
    };
    

    vllt könnt ihr mir ja weiterhelfen.
    schonmal vielen dank für eure hilfe,
    liebe gürße whiletruedo


Anmelden zum Antworten