Mercurial > dwindows
comparison win/dw.c @ 295:aac3ab26d636
More key_press cleanups.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Wed, 26 Mar 2003 07:03:04 +0000 |
parents | 144a94011265 |
children | caed245ea8a1 |
comparison
equal
deleted
inserted
replaced
294:144a94011265 | 295:aac3ab26d636 |
---|---|
1276 static int command_active = 0; | 1276 static int command_active = 0; |
1277 SignalHandler *tmp = Root; | 1277 SignalHandler *tmp = Root; |
1278 void (*windowfunc)(PVOID); | 1278 void (*windowfunc)(PVOID); |
1279 ULONG origmsg = msg; | 1279 ULONG origmsg = msg; |
1280 | 1280 |
1281 /* Deal with translating some messages */ | |
1281 if(msg == WM_RBUTTONDOWN || msg == WM_MBUTTONDOWN) | 1282 if(msg == WM_RBUTTONDOWN || msg == WM_MBUTTONDOWN) |
1282 msg = WM_LBUTTONDOWN; | 1283 msg = WM_LBUTTONDOWN; |
1283 if(msg == WM_RBUTTONUP || msg == WM_MBUTTONUP) | 1284 else if(msg == WM_RBUTTONUP || msg == WM_MBUTTONUP) |
1284 msg = WM_LBUTTONUP; | 1285 msg = WM_LBUTTONUP; |
1285 if(msg == WM_HSCROLL) | 1286 else if(msg == WM_HSCROLL) |
1286 msg = WM_VSCROLL; | 1287 msg = WM_VSCROLL; |
1288 else if(msg == WM_KEYDOWN && mp1 >= VK_F1 && mp1 <= VK_F24) | |
1289 msg = WM_CHAR; | |
1287 | 1290 |
1288 if(result == -1) | 1291 if(result == -1) |
1289 { | 1292 { |
1290 /* Avoid infinite recursion */ | 1293 /* Avoid infinite recursion */ |
1291 command_active = 1; | 1294 command_active = 1; |
1409 int (*keypressfunc)(HWND, char, int, int, void *) = tmp->signalfunction; | 1412 int (*keypressfunc)(HWND, char, int, int, void *) = tmp->signalfunction; |
1410 | 1413 |
1411 if(hWnd == tmp->window) | 1414 if(hWnd == tmp->window) |
1412 { | 1415 { |
1413 int special = 0; | 1416 int special = 0; |
1417 char ch = 0; | |
1414 | 1418 |
1415 if(GetAsyncKeyState(VK_SHIFT) & 0x8000) | 1419 if(GetAsyncKeyState(VK_SHIFT) & 0x8000) |
1416 special |= KC_SHIFT; | 1420 special |= KC_SHIFT; |
1417 if(GetAsyncKeyState(VK_CONTROL) & 0x8000) | 1421 if(GetAsyncKeyState(VK_CONTROL) & 0x8000) |
1418 special |= KC_CTRL; | 1422 special |= KC_CTRL; |
1419 if(mp2 & (1 << 29)) | 1423 if(mp2 & (1 << 29)) |
1420 special |= KC_ALT; | 1424 special |= KC_ALT; |
1421 | 1425 |
1422 result = keypressfunc(tmp->window, mp1 > 255 ? 0 : (char)mp1, mp1, special, tmp->data); | 1426 if(origmsg == WM_CHAR && mp1 < 128) |
1427 ch = (char)mp1; | |
1428 | |
1429 result = keypressfunc(tmp->window, ch, mp1, special, tmp->data); | |
1423 tmp = NULL; | 1430 tmp = NULL; |
1424 } | 1431 } |
1425 } | 1432 } |
1426 break; | 1433 break; |
1427 case WM_CLOSE: | 1434 case WM_CLOSE: |
1921 case WM_MOUSEMOVE: | 1928 case WM_MOUSEMOVE: |
1922 case WM_PAINT: | 1929 case WM_PAINT: |
1923 case WM_SIZE: | 1930 case WM_SIZE: |
1924 case WM_COMMAND: | 1931 case WM_COMMAND: |
1925 case WM_CHAR: | 1932 case WM_CHAR: |
1933 case WM_KEYDOWN: | |
1926 _wndproc(hWnd, msg, mp1, mp2); | 1934 _wndproc(hWnd, msg, mp1, mp2); |
1927 break; | 1935 break; |
1928 } | 1936 } |
1929 return DefWindowProc(hWnd, msg, mp1, mp2); | 1937 return DefWindowProc(hWnd, msg, mp1, mp2); |
1930 } | 1938 } |