|
发表于 2017-8-28 16:16:59
|
显示全部楼层
上海市上海市
APlayer 全景视频播放鼠标拖动视角代码 C++ 版本
15年的东西了。
// 定义几个全局变量:
BOOL g_bVRDrag = FALSE;
int g_nVRDragX = 0;
int g_nVRDragY = 0;
float g_fVRBaseH = 0.0;
float g_fVRBaseV = 0.0;
float g_fVRBaseD = 0.0;
// 在 APlayer 鼠标事件中添加如下代码:
void Player_OnMessage(LONG uMsg, LONG wParam, LONG lParam)
{
switch(uMsg)
{
case WM_LBUTTONDOWN:
{
if(!g_bVRDrag)
{
g_nVRDragX = X;
g_nVRDragY = Y;
USES_CONVERSION;
char sz[MAX_PATH];
strcpy(sz, T2A(g_Player.GetConfigStr(CONFIGID_VRPOSITION)));
sscanf(sz, "%f;%f;%f", &g_fVRBaseH, &g_fVRBaseV, &g_fVRBaseD);
::SetCapture( (HWND)(LONG_PTR)g_Player.GetConfigInt(CONFIGID_WINDOWHANDLE) );
g_bVRDrag = TRUE;
}
}
break;
case WM_LBUTTONUP:
{
if(g_bVRDrag)
{
g_bVRDrag = FALSE;
::ReleaseCapture();
}
}
break;
case WM_MOUSEMOVE:
{
int X = (short)LOWORD(lParam);
int Y = (short)HIWORD(lParam);
if(g_bVRDrag)
{
int nAddX = X - g_nVRDragX;
int nAddY = Y - g_nVRDragY;
float h=0.0,v=0.0,d=0.0;
h = g_fVRBaseH + double(nAddX) / 200;
v = g_fVRBaseV + double(nAddY) / 500;
USES_CONVERSION;
char sz[MAX_PATH];
sprintf(sz, "%f;%f;%f", h, v, g_fVRBaseD);
g_Player.SetConfigStr(CONFIGID_VRPOSITION, A2T(sz));
}
}
break;
|
|