bool wnd_fullscreen=false;\r
RECT wnd_fs_rect={20,20,768+20,576+20};\r
RECT wnd_fs_rect_client={0,0,768,576};\r
-OSVERSIONINFO windows_ver; //attempt to distigsh windows versions\r
+//OSVERSIONINFO windows_ver; //attempt to distigsh windows versions\r
+bool remotefnc=false;\r
+\r
+\r
+HMODULE user32dll;\r
+typedef UINT (*GETRAWINPUTDATAFNC) (HRAWINPUT,UINT,LPVOID,PUINT,UINT);\r
+typedef UINT (*REGISTERRAWINPUTDEVICEFNC) (PCRAWINPUTDEVICE,UINT,UINT);\r
+\r
+GETRAWINPUTDATAFNC dynGetRawInputData=NULL;\r
+REGISTERRAWINPUTDEVICEFNC dynRegisterRawInputDevices=NULL;\r
\r
\r
void MILLISLEEP(ULONG a)
return 0;\r
}\r
\r
+void LoadRemoteFunctions() {\r
+ user32dll=LoadLibrary("user32.dll");\r
+ if (user32dll!=NULL) {\r
+ dynGetRawInputData=(GETRAWINPUTDATAFNC)GetProcAddress(user32dll,"GetRawInputData");\r
+ if (dynGetRawInputData!=NULL) {\r
+ dynRegisterRawInputDevices=(REGISTERRAWINPUTDEVICEFNC)GetProcAddress(user32dll,"RegisterRawInputDevices");\r
+ if (dynRegisterRawInputDevices!=NULL) {\r
+ remotefnc=true;\r
+ }\r
+ }\r
+ }\r
+}\r
+\r
bool InitApp(HINSTANCE hinst,int cmdshow);\r
\r
HWND win_main;//global window handle\r
INT WINAPI WinMain( HINSTANCE hinst , HINSTANCE previnst, LPSTR cmdline, int cmdshow)\r
{\r
//On Windows we have to init a window, we use DXUT\r
+ LoadRemoteFunctions();\r
if (!InitApp(hinst,cmdshow)) return false;\r
//Starting Network support\r
WSADATA wsadat; \r
ERROR_MSG("Initialising WinSocked: Error at WSAStartup()\n");\r
return 0;\r
}\r
+ \r
result= CoInitializeEx(NULL,COINIT_MULTITHREADED );//Initialize COM for DirectShow\r
if (result!=S_OK) {\r
ERROR_MSG("Initialising COM: Error at Coinitialize()\n");\r
WaitForSingleObject(commandthread,INFINITE);\r
shutdown(0);\r
WSACleanup();\r
+ if (user32dll) FreeModule(user32dll);\r
return 0;\r
\r
}\r
\r
break;\r
case WM_INPUT:\r
- if ((windows_ver.dwMajorVersion>5 || \r
- (windows_ver.dwMajorVersion==5 && windows_ver.dwMinorVersion>=1)) ) {\r
+ if (remotefnc ) {\r
//only on XP!\r
LPRAWINPUT lpit;\r
UINT risize;\r
- GetRawInputData((HRAWINPUT)lparam,RID_INPUT,NULL,&risize,sizeof(RAWINPUTHEADER));\r
+ dynGetRawInputData((HRAWINPUT)lparam,RID_INPUT,NULL,&risize,sizeof(RAWINPUTHEADER));\r
lpit=(LPRAWINPUT)malloc(risize);\r
- GetRawInputData((HRAWINPUT)lparam,RID_INPUT,lpit,&risize,sizeof(RAWINPUTHEADER));\r
+ dynGetRawInputData((HRAWINPUT)lparam,RID_INPUT,lpit,&risize,sizeof(RAWINPUTHEADER));\r
\r
if (lpit->header.dwType==RIM_TYPEHID && lpit->data.hid.dwSizeHid>=2) {\r
DWORD button=lpit->data.hid.bRawData[1] | (lpit->data.hid.bRawData[0]<< 8);\r
\r
bool InitApp(HINSTANCE hinst,int cmdshow) {\r
/* main window */\r
- windows_ver.dwOSVersionInfoSize=sizeof(windows_ver);\r
- GetVersionEx(&windows_ver);\r
WNDCLASS wcs;\r
DWORD flags;\r
wcs.style = CS_HREDRAW | CS_VREDRAW;\r
return FALSE;\r
ShowWindow(win,SW_SHOWNORMAL);\r
UpdateWindow(win);\r
- if (windows_ver.dwMajorVersion>5 || \r
- ( windows_ver.dwMajorVersion==5 && windows_ver.dwMinorVersion>=1)) {//at least windows XP\r
+ if (remotefnc) {//at least windows XP\r
/* We want to support MCE Remote controls*/\r
RAWINPUTDEVICE remote_control_data[4];\r
ZeroMemory(remote_control_data,sizeof(remote_control_data));\r
remote_control_data[3].usUsagePage=0x01; \r
remote_control_data[3].usUsage=0x80; \r
remote_control_data[3].dwFlags=0;\r
- if (RegisterRawInputDevices(remote_control_data,4,sizeof(remote_control_data[0]))!=TRUE) {\r
+ if (dynRegisterRawInputDevices(remote_control_data,4,sizeof(remote_control_data[0]))!=TRUE) {\r
MessageBox(0,"Registering remote control failed!","Aborting!",0);\r
return FALSE;\r
}\r