#pragma once

#include <Windows.h>
#include <si.h>
#include <siapp.h>

/*
 * 3D鼠标设备
 */
SiHdl device = NULL;

/*
 * 3D鼠标消息
 */
int WM_3DMOUSE = 0;

extern "C" {
	/*
	 * 3D鼠标数据
	 */
	__declspec(dllimport) typedef struct
	{
		long result;
		long tx;
		long ty;
		long tz;
		long rx;
		long ry;
		long rz;

	} ThreeDMouseData;

	/*
	 * @ 初始化3D鼠标
	 * @ hWnd:   窗口句柄
	 * @ Return: 是否初始化完成
	 */
	__declspec(dllimport) BOOL init_3D_Mouse(HWND hWnd);

	/*
	 * @ 3D鼠标是否完成初始化
	 * @ Return: 是否初始化完成
	 */
	__declspec(dllimport) BOOL is_init_3D_Mouse();

	/*
	 * @ 销毁3D鼠标
	 */
	__declspec(dllimport) void dispose_3D_Mouse();

	/*
	 * 处理3D鼠标消息
	 */
	__declspec(dllimport) ThreeDMouseData* on_message_3D_Mouse(WPARAM wParam, LPARAM lParam);

	/*
	 * 销毁3D鼠标数据
	 * @ data : 3D鼠标数据
	 */
	__declspec(dllimport) void dispose_3D_Mouse_data(ThreeDMouseData* data);
}