Changeset 1839 for trunk/src


Ignore:
Timestamp:
Nov 25, 1999, 8:22:04 PM (26 years ago)
Author:
sandervl
Message:

desktop + misc fixes

Location:
trunk/src/user32
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/user32/oslibwin.cpp

    r1831 r1839  
    1 /* $Id: oslibwin.cpp,v 1.47 1999-11-24 19:32:21 sandervl Exp $ */
     1/* $Id: oslibwin.cpp,v 1.48 1999-11-25 19:22:02 sandervl Exp $ */
    22/*
    33 * Window API wrappers for OS/2
     
    3838        hwndParent = HWND_DESKTOP;
    3939  }
    40 
     40  else
     41  if(hwndParent == OSLIB_HWND_OBJECT) {
     42        hwndParent = HWND_OBJECT;
     43  }
    4144  return (WinSetParent(hwnd, hwndParent, fRedraw) == 0);
    4245}
  • trunk/src/user32/win32wbase.cpp

    r1837 r1839  
    1 /* $Id: win32wbase.cpp,v 1.94 1999-11-24 20:28:20 sandervl Exp $ */
     1/* $Id: win32wbase.cpp,v 1.95 1999-11-25 19:22:02 sandervl Exp $ */
    22/*
    33 * Win32 Window Base Class for OS/2
     
    634634  else
    635635  {
    636         dprintf(("Set window ID to %x", cs->hMenu));
    637636        setWindowId((DWORD)cs->hMenu);
    638637  }
     
    15441543
    15451544    case WM_SETREDRAW:
     1545    {
     1546     DWORD oldStyle = getStyle();
     1547
    15461548        if(wParam)
    1547                 SetWindowLongA (GWL_STYLE, GetWindowLongA (GWL_STYLE) | WS_VISIBLE);
    1548         else    SetWindowLongA (GWL_STYLE, GetWindowLongA (GWL_STYLE) & ~WS_VISIBLE);
     1549                setStyle(getStyle() | WS_VISIBLE);
     1550        else    setStyle(getStyle() & ~WS_VISIBLE);
     1551
     1552        updateWindowStyle(getExStyle(), oldStyle);
    15491553
    15501554        return 0; //TODO
    1551 
     1555    }
    15521556    case WM_NCCREATE:
    15531557        return(TRUE);
     
    20682072}
    20692073//******************************************************************************
    2070 //TODO: Probably not complete compatible with win32 implementation
    2071 //******************************************************************************
    2072 LRESULT Win32BaseWindow::BroadcastMessageA(int type, UINT msg, WPARAM wParam, LPARAM lParam)
     2074//Send message to window of another process
     2075//******************************************************************************
     2076LRESULT Win32BaseWindow::SendMessageToProcess(UINT msg, WPARAM wParam, LPARAM lParam, BOOL fUnicode)
    20732077{
    20742078 POSTMSG_PACKET *packet = (POSTMSG_PACKET *)_smalloc(sizeof(POSTMSG_PACKET));
    20752079
    2076     dprintf(("BroadCastMessageA %x %x %x", msg, wParam, lParam));
    2077     return 0;
    2078 
     2080    dprintf(("SendMessageToProcess %x %x %x %x", getOS2WindowHandle(), msg, wParam, lParam));
    20792081    packet->Msg = msg;
    20802082    packet->wParam = wParam;
    20812083    packet->lParam = lParam;
    2082     packet->fUnicode = FALSE;
    2083 
    2084     return OSLibWinBroadcastMsg(WIN32APP_POSTMSG, WIN32PM_MAGIC, (DWORD)packet, type == BROADCAST_SEND);
    2085 }
    2086 //******************************************************************************
    2087 //TODO: Probably not complete compatible with win32 implementation
     2084    packet->fUnicode = fUnicode;
     2085    return OSLibSendMessage(getOS2WindowHandle(), WIN32APP_POSTMSG, WIN32PM_MAGIC, (DWORD)packet);
     2086}
     2087//******************************************************************************
     2088//TODO: Do this more efficiently
     2089//******************************************************************************
     2090LRESULT Win32BaseWindow::BroadcastMessageA(int type, UINT msg, WPARAM wParam, LPARAM lParam)
     2091{
     2092 Win32BaseWindow *window;
     2093 HWND hwnd = WNDHANDLE_MAGIC_HIGHWORD;
     2094 DWORD processid, myprocessid;
     2095
     2096    dprintf(("BroadCastMessageA %x %x %x", msg, wParam, lParam, GetFS()));
     2097    myprocessid = GetCurrentProcessId();
     2098
     2099    for(int i=0;i<MAX_WINDOW_HANDLES;i++) {
     2100        window = GetWindowFromHandle(hwnd++);
     2101        if(window) {
     2102            if (window->getStyle() & WS_POPUP || (window->getStyle() & WS_CAPTION) == WS_CAPTION)
     2103            {
     2104
     2105                if(type == BROADCAST_SEND) {
     2106                        GetWindowThreadProcessId(hwnd, &processid);
     2107                        if(processid == myprocessid) {
     2108                            window->SendMessageA(msg, wParam, lParam);
     2109                        }
     2110                        else {
     2111                            window->SendMessageToProcess(msg, wParam, lParam, FALSE);
     2112                        }
     2113                }
     2114                else    window->PostMessageA(msg, wParam, lParam);
     2115            }
     2116        }
     2117    }
     2118    return 0;
     2119}
     2120//******************************************************************************
     2121//TODO: Do this more efficiently
    20882122//******************************************************************************
    20892123LRESULT Win32BaseWindow::BroadcastMessageW(int type, UINT msg, WPARAM wParam, LPARAM lParam)
    20902124{
    2091  POSTMSG_PACKET *packet = (POSTMSG_PACKET *)_smalloc(sizeof(POSTMSG_PACKET));
     2125 Win32BaseWindow *window;
     2126 HWND hwnd = WNDHANDLE_MAGIC_HIGHWORD;
     2127 DWORD processid, myprocessid;
     2128
    20922129
    20932130    dprintf(("BroadCastMessageW %x %x %x", msg, wParam, lParam));
     2131    myprocessid = GetCurrentProcessId();
     2132
     2133    for(int i=0;i<MAX_WINDOW_HANDLES;i++) {
     2134        window = GetWindowFromHandle(hwnd++);
     2135        if(window) {
     2136            if (window->getStyle() & WS_POPUP || (window->getStyle() & WS_CAPTION) == WS_CAPTION)
     2137            {
     2138
     2139                if(type == BROADCAST_SEND) {
     2140                        GetWindowThreadProcessId(hwnd, &processid);
     2141                        if(processid == myprocessid) {
     2142                            window->SendMessageW(msg, wParam, lParam);
     2143                        }
     2144                        else {
     2145                            window->SendMessageToProcess(msg, wParam, lParam, TRUE);
     2146                        }
     2147                }
     2148                else    window->PostMessageW(msg, wParam, lParam);
     2149            }
     2150        }
     2151    }
    20942152    return 0;
    2095 
    2096     packet->Msg = msg;
    2097     packet->wParam = wParam;
    2098     packet->lParam = lParam;
    2099     packet->fUnicode = TRUE;
    2100 
    2101     return OSLibWinBroadcastMsg(WIN32APP_POSTMSG, WIN32PM_MAGIC, (DWORD)packet, type == BROADCAST_SEND);
    21022153}
    21032154//******************************************************************************
     
    24032454        return oldhwnd;
    24042455   }
    2405    SetLastError(ERROR_INVALID_PARAMETER);
    2406    return 0;
     2456   else {
     2457    setParent(windowDesktop);
     2458        getParent()->AddChild(this);
     2459        OSLibWinSetParent(getOS2FrameWindowHandle(), OSLIB_HWND_DESKTOP);
     2460        return oldhwnd;
     2461   }
    24072462}
    24082463//******************************************************************************
     
    28142869                SendMessageA(WM_STYLECHANGING,GWL_EXSTYLE,(LPARAM)&ss);
    28152870                setExStyle(ss.styleNew);
    2816                 updateWindowStyle(ss.styleOld,dwStyle);
     2871                updateWindowStyle(ss.styleOld,getStyle());
    28172872                SendMessageA(WM_STYLECHANGED,GWL_EXSTYLE,(LPARAM)&ss);
    28182873                return ss.styleOld;
     
    28252880                    return value;
    28262881
    2827                 ss.styleOld = dwStyle;
    2828                 ss.styleNew = value;
    2829                 dprintf(("SetWindowLong GWL_STYLE %x old %x new style %x", getWindowHandle(), dwStyle, value));
     2882                        value &= ~(WS_VISIBLE | WS_CHILD);      /* Some bits can't be changed this way (WINE) */
     2883                ss.styleOld = getStyle();
     2884                        ss.styleNew = value | (ss.styleOld & (WS_VISIBLE | WS_CHILD));
     2885                dprintf(("SetWindowLong GWL_STYLE %x old %x new style %x", getWindowHandle(), getStyle(), value));
    28302886                SendMessageA(WM_STYLECHANGING,GWL_STYLE,(LPARAM)&ss);
    28312887                setStyle(ss.styleNew);
    28322888                updateWindowStyle(dwExStyle,ss.styleOld);
    28332889                SendMessageA(WM_STYLECHANGED,GWL_STYLE,(LPARAM)&ss);
     2890#ifdef DEBUG
     2891                PrintWindowStyle(ss.styleNew, 0);
     2892#endif
    28342893                return ss.styleOld;
    28352894        }
     
    29372996{
    29382997    windowId = id;
     2998    dprintf(("Set window ID to %x", id));
    29392999    OSLibSetWindowID(OS2HwndFrame, id);
    29403000}
  • trunk/src/user32/win32wbase.h

    r1831 r1839  
    1 /* $Id: win32wbase.h,v 1.45 1999-11-24 19:32:23 sandervl Exp $ */
     1/* $Id: win32wbase.h,v 1.46 1999-11-25 19:22:03 sandervl Exp $ */
    22/*
    33 * Win32 Window Base Class for OS/2
     
    207207       LRESULT  SendMessageA(ULONG msg, WPARAM wParam, LPARAM lParam);
    208208       LRESULT  SendMessageW(ULONG msg, WPARAM wParam, LPARAM lParam);
     209       LRESULT  SendMessageToProcess(UINT msg, WPARAM wParam, LPARAM lParam, BOOL fUnicode);
    209210       BOOL     PostMessageA(ULONG msg, WPARAM wParam, LPARAM lParam);
    210211       BOOL     PostMessageW(ULONG msg, WPARAM wParam, LPARAM lParam);
  • trunk/src/user32/win32wndhandle.cpp

    r949 r1839  
    1 /* $Id: win32wndhandle.cpp,v 1.1 1999-09-15 23:19:02 sandervl Exp $ */
     1/* $Id: win32wndhandle.cpp,v 1.2 1999-11-25 19:22:03 sandervl Exp $ */
    22/*
    33 * Win32 Handle Management Code for OS/2
     
    1919#include <vmutex.h>
    2020#include "win32wndhandle.h"
    21 
    22 #define MAX_WINDOW_HANDLES       1024
    23 #define WNDHANDLE_MAGIC_HIGHWORD 0x68000000
    24 #define WNDHANDLE_MAGIC_MASK     0x0000FFFF
    2521
    2622//******************************************************************************
  • trunk/src/user32/win32wndhandle.h

    r949 r1839  
    1 /* $Id: win32wndhandle.h,v 1.1 1999-09-15 23:19:02 sandervl Exp $ */
     1/* $Id: win32wndhandle.h,v 1.2 1999-11-25 19:22:04 sandervl Exp $ */
    22/*
    33 * Win32 Handle Management Code for OS/2
     
    1313#define __WIN32WNDHANDLE_H__
    1414
     15#define MAX_WINDOW_HANDLES       1024
     16#define WNDHANDLE_MAGIC_HIGHWORD 0x68000000
     17#define WNDHANDLE_MAGIC_MASK     0x0000FFFF
     18
    1519BOOL  HwAllocateWindowHandle(HWND *hwnd, DWORD dwUserData);
    1620void  HwFreeWindowHandle(HWND hwnd);
  • trunk/src/user32/windlg.cpp

    r1622 r1839  
    1 /* $Id: windlg.cpp,v 1.11 1999-11-05 17:50:30 achimha Exp $ */
     1/* $Id: windlg.cpp,v 1.12 1999-11-25 19:22:04 sandervl Exp $ */
    22/*
    33 * Win32 dialog apis for OS/2
     
    130130        if(!dialog || !dialog->IsDialog()) {
    131131            dprintf(("DialogBoxIndirectParamA, dialog %x not found", hwnd));
     132            SetLastError(ERROR_INVALID_WINDOW_HANDLE);
    132133            return 0;
    133134        }
     
    151152        if(!dialog || !dialog->IsDialog()) {
    152153            dprintf(("DialogBoxIndirectParamW, dialog %x not found", hwnd));
     154            SetLastError(ERROR_INVALID_WINDOW_HANDLE);
    153155            return 0;
    154156        }
     
    171173        if(!dialog || !dialog->IsDialog()) {
    172174            dprintf(("DialogBoxParamA, dialog %x not found", hwnd));
     175            SetLastError(ERROR_INVALID_WINDOW_HANDLE);
    173176            return 0;
    174177        }
     
    191194        if(!dialog || !dialog->IsDialog()) {
    192195            dprintf(("DialogBoxParamW, dialog %x not found", hwnd));
     196            SetLastError(ERROR_INVALID_WINDOW_HANDLE);
    193197            return 0;
    194198        }
     
    255259    }
    256260    dprintf(("USER32: GetDlgItem %x %d NOT FOUND!\n", hwnd, id));
     261    SetLastError(ERROR_INVALID_PARAMETER);
    257262    return 0;
    258263}
  • trunk/src/user32/window.cpp

    r1799 r1839  
    1 /* $Id: window.cpp,v 1.37 1999-11-21 16:22:14 achimha Exp $ */
     1/* $Id: window.cpp,v 1.38 1999-11-25 19:22:04 sandervl Exp $ */
    22/*
    33 * Win32 window apis for OS/2
     
    11201120    pDWP = (DWP *) hdwp;
    11211121    if (!pDWP) {
    1122     dprintf(("**EndDeferWindowPos invalid parameter\n"));
     1122        dprintf(("**EndDeferWindowPos invalid parameter\n"));
    11231123        SetLastError(ERROR_INVALID_PARAMETER);
    11241124        return FALSE;
     
    14621462DWORD WIN32API GetWindowThreadProcessId(HWND hWnd, PDWORD  lpdwProcessId)
    14631463{
    1464     dprintf(("USER32:  GetWindowThreadProcessId"));
     1464    dprintf2(("USER32:  GetWindowThreadProcessId"));
    14651465    hWnd = Win32BaseWindow::Win32ToOS2Handle(hWnd);
    14661466
     
    14711471DWORD WIN32API GetWindowContextHelpId(HWND hwnd)
    14721472{
    1473   dprintf(("USER32:  GetWindowContextHelpId, not implemented\n"));
    1474   hwnd = Win32BaseWindow::Win32ToOS2Handle(hwnd);
    1475 
    1476   return(0);
     1473  Win32BaseWindow *window;
     1474
     1475    window = Win32BaseWindow::GetWindowFromHandle(hwnd);
     1476    if(!window) {
     1477        dprintf(("GetWindowContextHelpId, window %x not found", hwnd));
     1478        SetLastError(ERROR_INVALID_WINDOW_HANDLE);
     1479        return 0;
     1480    }
     1481    dprintf(("GetWindowContextHelpId %x", hwnd));
     1482    return window->getWindowContextHelpId();
    14771483}
    14781484//******************************************************************************
     
    14801486BOOL WIN32API SetWindowContextHelpId(HWND hwnd, DWORD dwContextHelpId)
    14811487{
    1482   dprintf(("USER32:  SetWindowContextHelpId, not implemented"));
    1483   hwnd = Win32BaseWindow::Win32ToOS2Handle(hwnd);
    1484 
    1485   return(TRUE);
    1486 }
    1487 //******************************************************************************
    1488 //******************************************************************************
     1488  Win32BaseWindow *window;
     1489
     1490    window = Win32BaseWindow::GetWindowFromHandle(hwnd);
     1491    if(!window) {
     1492        dprintf(("SetWindowContextHelpId, window %x not found", hwnd));
     1493        SetLastError(ERROR_INVALID_WINDOW_HANDLE);
     1494        return 0;
     1495    }
     1496    dprintf(("SetWindowContextHelpId %x %d", hwnd, dwContextHelpId));
     1497    window->setWindowContextHelpId(dwContextHelpId);
     1498    return(TRUE);
     1499}
     1500//******************************************************************************
     1501//******************************************************************************
  • trunk/src/user32/windowword.cpp

    r1704 r1839  
    1 /* $Id: windowword.cpp,v 1.3 1999-11-11 13:17:33 sandervl Exp $ */
     1/* $Id: windowword.cpp,v 1.4 1999-11-25 19:22:04 sandervl Exp $ */
    22
    33/*
     
    138138    else
    139139    {
    140         dprintf(("GetWindowLongA; window %x not found!", hwnd));
     140        dprintf(("GetWindowLongA; window %x (%d) not found!", hwnd, nIndex));
    141141    }
    142142    return 0;
Note: See TracChangeset for help on using the changeset viewer.