diff win/dw.c @ 267:bf8b907f8a29

Added initial version of updated key_press_event callback.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Mon, 03 Mar 2003 19:50:19 +0000
parents 9ea4ac9a097f
children d706e0dbb0cb
line wrap: on
line diff
--- a/win/dw.c	Fri Feb 28 01:32:32 2003 +0000
+++ b/win/dw.c	Mon Mar 03 19:50:19 2003 +0000
@@ -1377,11 +1377,20 @@
 					break;
 				case WM_CHAR:
 					{
-						int (*keypressfunc)(HWND, int, void *) = tmp->signalfunction;
+						int (*keypressfunc)(HWND, char, int, int, void *) = tmp->signalfunction;
 
 						if(hWnd == tmp->window)
 						{
-							result = keypressfunc(tmp->window, LOWORD(mp2), tmp->data);
+							int special = 0;
+
+							if(GetAsyncKeyState(VK_SHIFT) & 0x8000)
+								special |= KC_SHIFT;
+							if(GetAsyncKeyState(VK_CONTROL) & 0x8000)
+								special |= KC_CTRL;
+                            if(mp2 & (1 << 29))
+								special |= KC_ALT;
+
+							result = keypressfunc(tmp->window, (char)mp1, mp1, special, tmp->data);
 							tmp = NULL;
 						}
 					}
@@ -1874,7 +1883,7 @@
 	case WM_LBUTTONDOWN:
 	case WM_MBUTTONDOWN:
 	case WM_RBUTTONDOWN:
-		SetActiveWindow(hWnd);
+		SetFocus(hWnd);
 		_wndproc(hWnd, msg, mp1, mp2);
 		break;
 	case WM_LBUTTONUP:
@@ -1884,6 +1893,7 @@
 	case WM_PAINT:
 	case WM_SIZE:
 	case WM_COMMAND:
+	case WM_CHAR:
 		_wndproc(hWnd, msg, mp1, mp2);
 		break;
 	}