Mercurial > dwindows
comparison win/dw.c @ 490:a9a09514dd56
Minor updates for the taskbar code.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Thu, 13 Nov 2003 01:13:08 +0000 |
parents | d6e07d292145 |
children | 477de19f14af |
comparison
equal
deleted
inserted
replaced
489:bc156294dd16 | 490:a9a09514dd56 |
---|---|
1396 #endif | 1396 #endif |
1397 | 1397 |
1398 /* The main window procedure for Dynamic Windows, all the resizing code is done here. */ | 1398 /* The main window procedure for Dynamic Windows, all the resizing code is done here. */ |
1399 BOOL CALLBACK _wndproc(HWND hWnd, UINT msg, WPARAM mp1, LPARAM mp2) | 1399 BOOL CALLBACK _wndproc(HWND hWnd, UINT msg, WPARAM mp1, LPARAM mp2) |
1400 { | 1400 { |
1401 int result = -1; | 1401 int result = -1, taskbar = FALSE; |
1402 static int command_active = 0; | 1402 static int command_active = 0; |
1403 SignalHandler *tmp = Root; | 1403 SignalHandler *tmp = Root; |
1404 void (*windowfunc)(PVOID); | 1404 void (*windowfunc)(PVOID); |
1405 ULONG origmsg = msg; | 1405 ULONG origmsg = msg; |
1406 | 1406 |
1407 /* Deal with translating some messages */ | 1407 /* Deal with translating some messages */ |
1408 if(msg == WM_USER+2) | |
1409 { | |
1410 taskbar = TRUE; | |
1411 origmsg = msg = (UINT)mp2; /* no else here */ | |
1412 } | |
1408 if(msg == WM_RBUTTONDOWN || msg == WM_MBUTTONDOWN) | 1413 if(msg == WM_RBUTTONDOWN || msg == WM_MBUTTONDOWN) |
1409 msg = WM_LBUTTONDOWN; | 1414 msg = WM_LBUTTONDOWN; |
1410 else if(msg == WM_RBUTTONUP || msg == WM_MBUTTONUP) | 1415 else if(msg == WM_RBUTTONUP || msg == WM_MBUTTONUP) |
1411 msg = WM_LBUTTONUP; | 1416 msg = WM_LBUTTONUP; |
1412 else if(msg == WM_HSCROLL) | 1417 else if(msg == WM_HSCROLL) |
1413 msg = WM_VSCROLL; | 1418 msg = WM_VSCROLL; |
1414 else if(msg == WM_KEYDOWN) /* && mp1 >= VK_F1 && mp1 <= VK_F24) allow ALL special keys */ | 1419 else if(msg == WM_KEYDOWN) /* && mp1 >= VK_F1 && mp1 <= VK_F24) allow ALL special keys */ |
1415 msg = WM_CHAR; | 1420 msg = WM_CHAR; |
1416 else if(msg == WM_USER+2) | |
1417 msg = (UINT)mp2; | |
1418 | 1421 |
1419 if(result == -1) | 1422 if(result == -1) |
1420 { | 1423 { |
1421 /* Avoid infinite recursion */ | 1424 /* Avoid infinite recursion */ |
1422 command_active = 1; | 1425 command_active = 1; |
1462 } | 1465 } |
1463 } | 1466 } |
1464 break; | 1467 break; |
1465 case WM_LBUTTONDOWN: | 1468 case WM_LBUTTONDOWN: |
1466 { | 1469 { |
1467 POINTS pts = MAKEPOINTS(mp2); | |
1468 int (*buttonfunc)(HWND, int, int, int, void *) = (int (*)(HWND, int, int, int, void *))tmp->signalfunction; | 1470 int (*buttonfunc)(HWND, int, int, int, void *) = (int (*)(HWND, int, int, int, void *))tmp->signalfunction; |
1469 | 1471 |
1470 if(hWnd == tmp->window) | 1472 if(hWnd == tmp->window) |
1471 { | 1473 { |
1472 int button; | 1474 int button; |
1481 break; | 1483 break; |
1482 case WM_MBUTTONDOWN: | 1484 case WM_MBUTTONDOWN: |
1483 button = 3; | 1485 button = 3; |
1484 break; | 1486 break; |
1485 } | 1487 } |
1486 result = buttonfunc(tmp->window, pts.x, pts.y, button, tmp->data); | 1488 if(taskbar) |
1489 { | |
1490 POINT ptl; | |
1491 GetCursorPos(&ptl); | |
1492 result = buttonfunc(tmp->window, ptl.x, ptl.y, button, tmp->data); | |
1493 } | |
1494 else | |
1495 { | |
1496 POINTS pts = MAKEPOINTS(mp2); | |
1497 result = buttonfunc(tmp->window, pts.x, pts.y, button, tmp->data); | |
1498 } | |
1487 tmp = NULL; | 1499 tmp = NULL; |
1488 } | 1500 } |
1489 } | 1501 } |
1490 break; | 1502 break; |
1491 case WM_LBUTTONUP: | 1503 case WM_LBUTTONUP: |
1492 { | 1504 { |
1493 POINTS pts = MAKEPOINTS(mp2); | |
1494 int (*buttonfunc)(HWND, int, int, int, void *) = (int (*)(HWND, int, int, int, void *))tmp->signalfunction; | 1505 int (*buttonfunc)(HWND, int, int, int, void *) = (int (*)(HWND, int, int, int, void *))tmp->signalfunction; |
1495 | 1506 |
1496 if(hWnd == tmp->window) | 1507 if(hWnd == tmp->window) |
1497 { | 1508 { |
1498 int button; | 1509 int button; |
1507 break; | 1518 break; |
1508 case WM_MBUTTONUP: | 1519 case WM_MBUTTONUP: |
1509 button = 3; | 1520 button = 3; |
1510 break; | 1521 break; |
1511 } | 1522 } |
1512 result = buttonfunc(tmp->window, pts.x, pts.y, button, tmp->data); | 1523 if(taskbar) |
1524 { | |
1525 POINT ptl; | |
1526 GetCursorPos(&ptl); | |
1527 result = buttonfunc(tmp->window, ptl.x, ptl.y, button, tmp->data); | |
1528 } | |
1529 else | |
1530 { | |
1531 POINTS pts = MAKEPOINTS(mp2); | |
1532 result = buttonfunc(tmp->window, pts.x, pts.y, button, tmp->data); | |
1533 } | |
1513 tmp = NULL; | 1534 tmp = NULL; |
1514 } | 1535 } |
1515 } | 1536 } |
1516 break; | 1537 break; |
1517 case WM_MOUSEMOVE: | 1538 case WM_MOUSEMOVE: |