- Timestamp:
- Sep 22, 1999, 10:58:36 AM (26 years ago)
- Location:
- trunk/src/user32
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/user32/pmwindow.cpp
r1000 r1005 1 /* $Id: pmwindow.cpp,v 1. 4 1999-09-21 17:05:36 dengertExp $ */1 /* $Id: pmwindow.cpp,v 1.5 1999-09-22 08:58:35 sandervl Exp $ */ 2 2 /* 3 3 * Win32 Window Managment Code for OS/2 … … 511 511 case WM_CHAR: 512 512 { 513 ULONG repeatCount=0, virtualKey=0, keyFlags=0, scanCode=0; 514 ULONG flags = SHORT1FROMMP(mp1); 515 BOOL keyWasPressed; 516 char c; 517 USHORT virtualKeyTable [66] = { 518 0x00, // OS/2 VK Win32 VK, Entry 0 is not used 519 0x01, // VK_BUTTON1 VK_LBUTTON 520 0x02, // VK_BUTTON2 VK_RBUTTON 521 0x04, // VK_BUTTON3 VK_MBUTTON 522 0x03, // VK_BREAK VK_CANCEL 523 0x08, // VK_BACKSPACE VK_BACK 524 0x09, // VK_TAB VK_TAB 525 0x00, // VK_BACKTAB No equivalent! 526 0x0D, // VK_NEWLINE VK_RETURN 527 0x10, // VK_SHIFT VK_SHIFT 528 0x11, // VK_CTRL VK_CONTROL 529 0x12, // VK_ALT VK_MENU, best match I guess 530 0x12, // VK_ALTGRAF VK_MENU, best match I guess 531 0x13, // VK_PAUSE VK_PAUSE 532 0x14, // VK_CAPSLOCK VK_CAPITAL 533 0x1B, // VK_ESC VK_ESCAPE 534 0x20, // VK_SPACE VK_SPACE 535 0x00, // VK_PAGEUP No equivalent! At least, I think 536 0x00, // VK_PAGEDOWN No equivalent! At least, I think 537 0x23, // VK_END VK_END 538 0x24, // VK_HOME VK_HOME 539 0x25, // VK_LEFT VK_LEFT 540 0x26, // VK_UP VK_UP 541 0x27, // VK_RIGHT VK_RIGHT 542 0x28, // VK_DOWN VK_DOWN 543 0x2C, // VK_PRINTSCRN VK_SNAPSHOT 544 0x2D, // VK_INSERT VK_INSERT 545 0x2E, // VK_DELETE VK_DELETE 546 0x91, // VK_SCRLLOCK VK_SCROLL 547 0x90, // VK_NUMLOCK VK_NUMLOCK 548 0x2B, // VK_ENTER VK_EXECUTE, best match I guess 549 0x00, // VK_SYSRQ No equivalent! 550 0x70, // VK_F1 VK_F1 551 0x71, // VK_F2 VK_F2 552 0x72, // VK_F3 VK_F3 553 0x73, // VK_F4 VK_F4 554 0x74, // VK_F5 VK_F5 555 0x75, // VK_F6 VK_F6 556 0x76, // VK_F7 VK_F7 557 0x77, // VK_F8 VK_F8 558 0x78, // VK_F9 VK_F9 559 0x79, // VK_F10 VK_F10 560 0x7A, // VK_F11 VK_F11 561 0x7B, // VK_F12 VK_F12 562 0x7C, // VK_F13 VK_F13 563 0x7D, // VK_F14 VK_F14 564 0x7E, // VK_F15 VK_F15 565 0x7F, // VK_F16 VK_F16 566 0x80, // VK_F17 VK_F17 567 0x81, // VK_F18 VK_F18 568 0x82, // VK_F19 VK_F19 569 0x83, // VK_F20 VK_F20 570 0x84, // VK_F21 VK_F21 571 0x85, // VK_F22 VK_F22 572 0x86, // VK_F23 VK_F23 573 0x87, // VK_F24 VK_F24 574 0x00, // VK_ENDDRAG No equivalent! 575 0x0C, // VK_CLEAR VK_CLEAR 576 0xF9, // VK_EREOF VK_EREOF 577 0xFD, // VK_PA1 VK_PA1 578 0xF6, // VK_ATTN VK_ATTN 579 0xF7, // VK_CRSEL VK_CRSEL 580 0xF8, // VK_EXSEL VK_EXSEL 581 0x00, // VK_COPY No equivalent! 582 0x00, // VK_BLK1 No equivalent! 583 0x00}; // VK_BLK2 No equivalent! 584 585 586 repeatCount = SHORT2FROMMP (mp1) >> 8; 587 scanCode = SHORT2FROMMP (mp1) & 255; 588 keyWasPressed = ((SHORT1FROMMP (mp1) & KC_PREVDOWN) == KC_PREVDOWN); 589 590 // both WM_KEYUP & WM_KEYDOWN want a virtual key, find the right Win32 virtual key 591 // given the OS/2 virtual key and OS/2 character 592 593 if (((SHORT1FROMMP (mp1) & KC_CHAR) == KC_CHAR) || 594 ((SHORT1FROMMP (mp1) & KC_LONEKEY) == KC_LONEKEY)) 595 { 596 c = SHORT1FROMMP (mp2); 597 if ((c >= 'A') && (c <= 'Z')) { 598 virtualKey = c; 599 goto VirtualKeyFound; 600 } 601 if ((c >='a') && (c <= 'z')) { 602 virtualKey = c - 32; // make it uppercase 603 goto VirtualKeyFound; 604 } 605 if ((c >= '0') && (c <= '9')) { 606 virtualKey = c; 607 goto VirtualKeyFound; 608 } 609 } 610 611 // convert OS/2 virtual keys to Win32 virtual key 612 if (SHORT2FROMMP (mp2) <= VK_BLK2) 613 virtualKey = virtualKeyTable [SHORT2FROMMP (mp2)]; 614 615 VirtualKeyFound: 616 617 if ((WinGetKeyState (HWND_DESKTOP, VK_ALT) & 0x8000) == 0) 618 { 619 // 620 // the Alt key is not pressed 621 // 622 if ((flags & KC_KEYUP) == KC_KEYUP) { 623 // send WM_KEYUP message 624 625 if(win32wnd->MsgKeyUp (repeatCount, scanCode, virtualKey)) { 626 goto RunDefWndProc; 627 } 628 } 629 else { 630 // send WM_KEYDOWN message 631 if (win32wnd->MsgKeyDown (repeatCount, scanCode, virtualKey, keyWasPressed)) 632 goto RunDefWndProc; 633 } 634 } 635 else { 636 // 637 // the Alt key is pressed 638 // 639 if ((flags & KC_KEYUP) == KC_KEYUP) { 640 // send WM_SYSKEYUP message 641 642 if(win32wnd->MsgSysKeyUp (repeatCount, scanCode, virtualKey)) { 643 goto RunDefWndProc; 644 } 645 } 646 else { 647 // send WM_SYSKEYDOWN message 648 if (win32wnd->MsgSysKeyDown (repeatCount, scanCode, virtualKey, keyWasPressed)) 649 goto RunDefWndProc; 650 } 651 } 652 653 break; 654 } 655 #if 0 656 case WM_CHAR: 657 { 513 658 ULONG keyflags = 0, vkey = 0; 514 659 ULONG fl = SHORT1FROMMP(mp1); … … 538 683 break; 539 684 } 685 #endif 540 686 case WM_INITMENU: 541 687 case WM_MENUSELECT: -
trunk/src/user32/win32dlg.cpp
r985 r1005 1 /* $Id: win32dlg.cpp,v 1. 2 1999-09-19 18:33:31sandervl Exp $ */1 /* $Id: win32dlg.cpp,v 1.3 1999-09-22 08:58:35 sandervl Exp $ */ 2 2 /* 3 3 * Win32 Dialog Code for OS/2 … … 918 918 } 919 919 //****************************************************************************** 920 // TODO:920 // GetNextDlgTabItem32 (USER32.276) 921 921 //****************************************************************************** 922 922 HWND Win32Dialog::getNextDlgTabItem(HWND hwndCtrl, BOOL fPrevious) 923 923 { 924 return 0; 925 } 926 //****************************************************************************** 927 //TODO 924 Win32BaseWindow *child, *nextchild, *lastchild; 925 HWND retvalue; 926 927 if (hwndCtrl) 928 { 929 child = GetWindowFromHandle(hwndCtrl); 930 if (!child) 931 { 932 retvalue = 0; 933 goto END; 934 } 935 /* Make sure hwndCtrl is a top-level child */ 936 while ((child->getStyle() & WS_CHILD) && (child->getParent() != this)) 937 { 938 child = child->getParent(); 939 if(child == NULL) break; 940 } 941 942 if (!child || child->getParent() != this) 943 { 944 retvalue = 0; 945 goto END; 946 } 947 } 948 else 949 { 950 /* No ctrl specified -> start from the beginning */ 951 child = (Win32BaseWindow *)getFirstChild(); 952 if (!child) 953 { 954 retvalue = 0; 955 goto END; 956 } 957 958 if (!fPrevious) 959 { 960 while (child->getNextChild()) 961 { 962 child = (Win32BaseWindow *)child->getNextChild(); 963 } 964 } 965 } 966 967 lastchild = child; 968 nextchild = (Win32BaseWindow *)child->getNextChild(); 969 while (TRUE) 970 { 971 if (!nextchild) nextchild = (Win32BaseWindow *)getFirstChild(); 972 973 if (child == nextchild) break; 974 975 if ((nextchild->getStyle() & WS_TABSTOP) && (nextchild->getStyle() & WS_VISIBLE) && 976 !(nextchild->getStyle() & WS_DISABLED)) 977 { 978 lastchild = nextchild; 979 if (!fPrevious) break; 980 } 981 nextchild = (Win32BaseWindow *)nextchild->getNextChild(); 982 } 983 retvalue = lastchild->getWindowHandle(); 984 985 END: 986 return retvalue; 987 } 988 //****************************************************************************** 928 989 //****************************************************************************** 929 990 Win32BaseWindow *Win32Dialog::getDlgItem(int id) 930 991 { 992 for (Win32BaseWindow *child = (Win32BaseWindow *)getFirstChild(); child; child = (Win32BaseWindow *)child->getNextChild()) 993 { 994 if (child->getWindowId() == id) 995 { 996 return child; 997 } 998 } 931 999 return 0; 932 1000 } -
trunk/src/user32/win32wbase.cpp
r1000 r1005 1 /* $Id: win32wbase.cpp,v 1. 6 1999-09-21 17:05:36 dengertExp $ */1 /* $Id: win32wbase.cpp,v 1.7 1999-09-22 08:58:35 sandervl Exp $ */ 2 2 /* 3 3 * Win32 Window Base Class for OS/2 … … 898 898 return SendInternalMessageA(WM_CHAR, cmd, lParam); 899 899 } 900 } 901 //****************************************************************************** 902 //****************************************************************************** 903 ULONG Win32BaseWindow::MsgKeyUp (ULONG repeatCount, ULONG scancode, ULONG virtualKey) 904 { 905 ULONG lParam=0; 906 907 lParam = repeatCount & 0x0FFFF; // bit 0-15, repeatcount 908 lParam |= (scancode & 0x0FF) << 16; // bit 16-23, scancode 909 // bit 24, 1=extended key 910 // bit 25-28, reserved 911 lParam |= 0 << 29; // bit 29, key is released, always 0 for WM_KEYUP ?? <- conflict according to the MS docs 912 lParam |= 1 << 30; // bit 30, previous state, always 1 for a WM_KEYUP message 913 lParam |= 1 << 31; // bit 31, transition state, always 1 for WM_KEYUP 914 915 dprintf(("WM_KEYUP: vkey:(%x) param:(%x)", virtualKey, lParam)); 916 917 return SendInternalMessageA (WM_KEYUP, virtualKey, lParam); 918 } 919 //****************************************************************************** 920 //****************************************************************************** 921 ULONG Win32BaseWindow::MsgKeyDown (ULONG repeatCount, ULONG scancode, ULONG virtualKey, BOOL keyWasPressed) 922 { 923 ULONG lParam=0; 924 925 lParam = repeatCount & 0x0FFFF; // bit 0-15, repeatcount 926 lParam |= (scancode & 0x0FF) << 16; // bit 16-23, scancode 927 // bit 24, 1=extended key 928 // bit 25-28, reserved 929 // bit 29, key is pressed, always 0 for WM_KEYDOWN ?? <- conflict according to the MS docs 930 if (keyWasPressed) 931 lParam |= 1 << 30; // bit 30, previous state, 1 means key was pressed 932 // bit 31, transition state, always 0 for WM_KEYDOWN 933 934 dprintf(("WM_KEYDOWN: vkey:(%x) param:(%x)", virtualKey, lParam)); 935 936 return SendInternalMessageA (WM_KEYDOWN, virtualKey, lParam); 937 } 938 //****************************************************************************** 939 //****************************************************************************** 940 ULONG Win32BaseWindow::MsgSysKeyUp (ULONG repeatCount, ULONG scancode, ULONG virtualKey) 941 { 942 ULONG lParam=0; 943 944 lParam = repeatCount & 0x0FFFF; // bit 0-15,repeatcount 945 lParam |= (scancode & 0x0FF) << 16; // bit 16-23, scancode 946 // bit 24, 1=extended key 947 // bit 25-28, reserved 948 lParam |= 0 << 29; // bit 29, key is released, always 0 for WM_KEYUP ?? <- conflict according to the MS docs 949 lParam |= 1 << 30; // bit 30, previous state, always 1 for a WM_KEYUP message 950 lParam |= 1 << 31; // bit 31, transition state, always 1 for WM_KEYUP 951 952 dprintf(("WM_SYSKEYUP: vkey:(%x) param:(%x)", virtualKey, lParam)); 953 954 return SendInternalMessageA (WM_SYSKEYUP, virtualKey, lParam); 955 } 956 //****************************************************************************** 957 //****************************************************************************** 958 ULONG Win32BaseWindow::MsgSysKeyDown (ULONG repeatCount, ULONG scancode, ULONG virtualKey, BOOL keyWasPressed) 959 { 960 ULONG lParam=0; 961 962 lParam = repeatCount & 0x0FFFF; // bit 0-15, repeatcount 963 lParam |= (scancode & 0x0FF) << 16; // bit 16-23, scancode 964 // bit 24, 1=extended key 965 // bit 25-28, reserved 966 // bit 29, key is pressed, always 0 for WM_KEYDOWN ?? <- conflict according to the MS docs 967 if (keyWasPressed) 968 lParam |= 1 << 30; // bit 30, previous state, 1 means key was pressed 969 // bit 31, transition state, always 0 for WM_KEYDOWN 970 971 dprintf(("WM_SYSKEYDOWN: vkey:(%x) param:(%x)", virtualKey, lParam)); 972 973 return SendInternalMessageA (WM_SYSKEYDOWN, virtualKey, lParam); 900 974 } 901 975 //****************************************************************************** -
trunk/src/user32/win32wbase.h
r1000 r1005 1 /* $Id: win32wbase.h,v 1. 3 1999-09-21 17:05:36 dengertExp $ */1 /* $Id: win32wbase.h,v 1.4 1999-09-22 08:58:36 sandervl Exp $ */ 2 2 /* 3 3 * Win32 Window Base Class for OS/2 … … 51 51 #define WM_WIN32_POSTMESSAGEW 0x4001 52 52 53 class Win32BaseWindow : public GenericObject, p rotectedChildWindow53 class Win32BaseWindow : public GenericObject, public ChildWindow 54 54 { 55 55 public: … … 78 78 ULONG MsgSysCommand(ULONG win32sc, ULONG x, ULONG y); 79 79 ULONG MsgChar(ULONG cmd, ULONG repeatcnt, ULONG scancode, ULONG vkey, ULONG keyflags); 80 ULONG MsgKeyUp (ULONG repeatCount, ULONG scancode, ULONG virtualKey); 81 ULONG MsgKeyDown (ULONG repeatCount, ULONG scancode, ULONG virtualKey, BOOL keyWasPressed); 82 ULONG MsgSysKeyUp (ULONG repeatCount, ULONG scancode, ULONG virtualKey); 83 ULONG MsgSysKeyDown (ULONG repeatCount, ULONG scancode, ULONG virtualKey, BOOL keyWasPressed); 80 84 ULONG MsgButton(ULONG msg, ULONG ncx, ULONG ncy, ULONG clx, ULONG cly); 81 85 ULONG MsgMouseMove(ULONG keystate, ULONG x, ULONG y); -
trunk/src/user32/win32wndchild.h
r949 r1005 1 /* $Id: win32wndchild.h,v 1. 1 1999-09-15 23:19:02sandervl Exp $ */1 /* $Id: win32wndchild.h,v 1.2 1999-09-22 08:58:36 sandervl Exp $ */ 2 2 /* 3 3 * Win32 Child/Parent window class for OS/2 … … 23 23 virtual ~ChildWindow(); 24 24 25 ChildWindow *getFirstChild() { return children; }; 26 ChildWindow *getNextChild() { return nextchild; }; 27 25 28 protected: 26 29 … … 37 40 BOOL RemoveChild(ChildWindow *child); 38 41 39 ChildWindow *getFirstChild() { return children; };40 ChildWindow *getNextChild() { return nextchild; };41 42 void setNextChild(ChildWindow *child) { nextchild = child; }; 42 43 -
trunk/src/user32/window.cpp
r996 r1005 1 /* $Id: window.cpp,v 1. 4 1999-09-21 08:24:05sandervl Exp $ */1 /* $Id: window.cpp,v 1.5 1999-09-22 08:58:36 sandervl Exp $ */ 2 2 /* 3 3 * Win32 window apis for OS/2 … … 690 690 { 691 691 dprintf(("USER32: GetDesktopWindow\n")); 692 return 0;692 return OSLIB_HWND_DESKTOP; 693 693 } 694 694 //******************************************************************************
Note:
See TracChangeset
for help on using the changeset viewer.