case WM_MOUSEWHEEL :
{
short zDelta = GET_WHEEL_DELTA_WPARAM(wParam);
distance += zDelta / WHEEL_DELTA;
}
break;
case WM_RBUTTONDOWN:
case WM_MBUTTONDOWN:
{
oldXPos = GET_X_LPARAM(lParam);
oldYPos = GET_Y_LPARAM(lParam);
ShowCursor(false);
}
break;
case WM_RBUTTONUP:
case WM_MBUTTONUP:
{
oldXPos = GET_X_LPARAM(lParam);
oldYPos = GET_Y_LPARAM(lParam);
ShowCursor(true);
}
break;
case WM_MOUSEMOVE:
{
if (wParam == 0)
break;
POINT p;
GetCursorPos(&p);
int xPos = p.x;//GET_X_LPARAM(lParam);
int yPos = p.y;//GET_Y_LPARAM(lParam);
if (wParam & MK_LBUTTON)
break;
if (wParam & MK_RBUTTON)
{
height_angle += (oldYPos - yPos) / 5.0f;
azimuth_angle += (oldXPos - xPos) / 5.0f;
}
else
if (wParam & MK_MBUTTON)
{
float dx = -(oldXPos - xPos) / 10.0f;
float dy = +(oldYPos - yPos) / 10.0f;
camx += +dx * cosf(xangle*pid180) + dy * sinf(xangle*pid180);
camy += dx * sinf(xangle*pid180) - dy * cosf(xangle*pid180);
}
if ((yPos<400) || (yPos > 500))
{
yPos = 400;
SetCursorPos(xPos, yPos);
oldYPos = yPos;
}
if ((xPos < 400)|| (xPos>500))
{
xPos = 400;
SetCursorPos(xPos, yPos);
oldXPos = xPos;
}
oldXPos = xPos;
oldYPos = yPos;
}
break;
... << RSDN@Home 1.0 beta 4 >>