1
0
mirror of https://github.com/FunkyFr3sh/cnc-ddraw.git synced 2025-03-24 17:49:52 +01:00

Support StarCraft's mouse and keyboard events

This commit is contained in:
Toni Spets 2010-12-11 14:45:09 +02:00
parent fc32b6a6d1
commit a8cdb4e2f2

15
main.c
View File

@ -25,6 +25,7 @@
#include "clipper.h" #include "clipper.h"
/* from mouse.c */ /* from mouse.c */
BOOL WINAPI fake_GetCursorPos(LPPOINT lpPoint);
void mouse_init(HWND); void mouse_init(HWND);
void mouse_lock(); void mouse_lock();
void mouse_unlock(); void mouse_unlock();
@ -254,6 +255,8 @@ HRESULT __stdcall ddraw_SetDisplayMode(IDirectDrawImpl *This, DWORD width, DWORD
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{ {
POINT pt;
switch(uMsg) switch(uMsg)
{ {
case WM_DESTROY: case WM_DESTROY:
@ -312,11 +315,18 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
case WM_KEYUP: case WM_KEYUP:
case WM_SYSKEYDOWN: case WM_SYSKEYDOWN:
case WM_SYSKEYUP: case WM_SYSKEYUP:
case WM_CHAR: /* for StarCraft and general support */
return ddraw->WndProc(hWnd, uMsg, wParam, lParam); return ddraw->WndProc(hWnd, uMsg, wParam, lParam);
case WM_LBUTTONDOWN: case WM_LBUTTONDOWN:
case WM_RBUTTONDOWN: case WM_RBUTTONDOWN:
case WM_LBUTTONUP: case WM_LBUTTONUP:
case WM_RBUTTONUP: case WM_RBUTTONUP:
/* rest for StarCraft and general support */
case WM_MBUTTONDOWN:
case WM_MBUTTONUP:
case WM_MBUTTONDBLCLK:
case WM_LBUTTONDBLCLK:
case WM_RBUTTONDBLCLK:
if(ddraw->mhack) if(ddraw->mhack)
{ {
if(!ddraw->locked) if(!ddraw->locked)
@ -329,6 +339,11 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
case 1139: /* this somehow triggers network activity in RA, investigate */ case 1139: /* this somehow triggers network activity in RA, investigate */
case 2024: /* this somehow allows RA edwin to work, investigate */ case 2024: /* this somehow allows RA edwin to work, investigate */
return ddraw->WndProc(hWnd, uMsg, wParam, lParam); return ddraw->WndProc(hWnd, uMsg, wParam, lParam);
/* for StartCraft and general support */
case WM_MOUSEMOVE:
fake_GetCursorPos(&pt);
return ddraw->WndProc(hWnd, uMsg, wParam, MAKELPARAM(pt.x, pt.y));
} }
return DefWindowProc(hWnd, uMsg, wParam, lParam); return DefWindowProc(hWnd, uMsg, wParam, lParam);