Changeset 9001 for trunk/src/user32/pmwindow.cpp
- Timestamp:
- Aug 14, 2002, 12:37:45 PM (23 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/user32/pmwindow.cpp
r8997 r9001 1 /* $Id: pmwindow.cpp,v 1.18 5 2002-08-13 20:17:23 sandervl Exp $ */1 /* $Id: pmwindow.cpp,v 1.186 2002-08-14 10:37:43 sandervl Exp $ */ 2 2 /* 3 3 * Win32 Window Managment Code for OS/2 … … 1855 1855 dprintf(("PMFRAME: WM_TRACKFRAME %x %x %x", win32wnd->getWindowHandle(), mp1, mp2)); 1856 1856 if(fOS2Look) {//sent by titlebar control 1857 #ifdef CUSTOM_TRACKFRAME1858 1857 Frame_SysCommandSizeMove(win32wnd, SC_MOVE_W+HTCAPTION_W); 1859 #else1860 FrameTrackFrame(win32wnd, TF_MOVE);1861 #endif1862 1858 } 1863 1859 rc = 0; … … 1926 1922 WinSetWindowUShort(hwnd, QWS_FLAGS, ulFrameFlags); 1927 1923 } 1928 #ifndef CUSTOM_TRACKFRAME1929 //******************************************************************************1930 //TODO: Quickly moving a window two times doesn't force a repaint (1st time)1931 //1932 //1933 BOOL (APIENTRY *WinTrackWindow)(HWND hwndTrack, PTRACKINFO pti) = NULL;1934 //1935 //******************************************************************************1936 VOID FrameTrackFrame(Win32BaseWindow *win32wnd,DWORD flags)1937 {1938 TRACKINFO track;1939 RECTL rcl;1940 PRECT pWindowRect, pClientRect;1941 HWND hwndTracking;1942 LONG parentHeight, parentWidth;1943 static BOOL fInit = FALSE;1944 APIRET rc;1945 BOOL ret;1946 HWND hwnd = win32wnd->getWindowHandle();1947 1948 if(!fInit) {1949 HMODULE hModule;1950 char buf[CCHMAXPATH];1951 rc = DosLoadModule(buf, sizeof(buf), "PMMERGE", &hModule);1952 rc = DosQueryProcAddr(hModule, 5466, NULL, (PFN *)&WinTrackWindow);1953 if(rc) WinTrackWindow = NULL;1954 fInit = TRUE;1955 }1956 dprintf(("FrameTrackFrame: %x %x", hwnd, flags));1957 track.cxBorder = 4;1958 track.cyBorder = 4; /* 4 pel wide lines used for rectangle */1959 track.cxGrid = 1;1960 track.cyGrid = 1; /* smooth tracking with mouse */1961 track.cxKeyboard = 8;1962 track.cyKeyboard = 8; /* faster tracking using cursor keys */1963 1964 pWindowRect = win32wnd->getWindowRect();1965 if(win32wnd->getParent()) {1966 parentHeight = win32wnd->getParent()->getClientHeight();1967 parentWidth = win32wnd->getParent()->getClientWidth();1968 hwndTracking = win32wnd->getParent()->getOS2WindowHandle();1969 }1970 else {1971 parentHeight = OSLibQueryScreenHeight();1972 parentWidth = OSLibQueryScreenWidth();1973 hwndTracking = HWND_DESKTOP;1974 }1975 1976 mapWin32ToOS2Rect(parentHeight, pWindowRect, (PRECTLOS2)&track.rclTrack);1977 rcl = track.rclTrack;1978 WinQueryWindowRect(hwndTracking, &track.rclBoundary);1979 1980 track.ptlMinTrackSize.x = 10;1981 track.ptlMinTrackSize.y = 10; /* set smallest allowed size of rectangle */1982 track.ptlMaxTrackSize.x = parentWidth;1983 track.ptlMaxTrackSize.y = parentHeight; /* set largest allowed size of rectangle */1984 1985 win32wnd->AdjustTrackInfo((PPOINT)&track.ptlMinTrackSize, (PPOINT)&track.ptlMaxTrackSize);1986 1987 track.fs = flags;1988 1989 BOOL fDynamicDrag = WinQuerySysValue(HWND_DESKTOP, SVOS_DYNAMICDRAG);1990 1991 //TODO: send WM_QUERYDRAGICON to fetch icon (not really necessary)1992 1993 SendMessageA( hwnd, WM_ENTERSIZEMOVE_W, 0, 0);1994 1995 SEL sel = RestoreOS2FS();1996 if(fDynamicDrag && WinTrackWindow) {1997 ret = WinTrackWindow(win32wnd->getOS2FrameWindowHandle(), &track);1998 }1999 else ret = WinTrackRect(hwndTracking, NULL, &track);2000 SetFS(sel);2001 2002 //TODO:2003 // if (HOOK_CallHooksA( WH_CBT_W, HCBT_MOVESIZE_W, (WPARAM)hwnd, (LPARAM)&sizingRect )) moved = FALSE;2004 2005 SendMessageA( hwnd, WM_EXITSIZEMOVE_W, 0, 0 );2006 SendMessageA( hwnd, WM_SETVISIBLE_W, !IsIconic(hwnd), 0L);2007 2008 if(ret) {2009 /* if successful copy final position back */2010 if(!WinEqualRect(0, &rcl, &track.rclTrack)) {2011 dprintf(("FrameTrackFrame: new (os/2) window rect: (%d,%d)(%d,%d)", track.rclTrack.xLeft, track.rclTrack.yBottom, track.rclTrack.xRight - track.rclTrack.xLeft, track.rclTrack.yTop - track.rclTrack.yBottom));2012 if(flags == TF_MOVE) {2013 WinSetWindowPos(win32wnd->getOS2FrameWindowHandle(),2014 0, track.rclTrack.xLeft, track.rclTrack.yBottom,2015 0, 0, SWP_MOVE);2016 }2017 else {2018 WinSetWindowPos(win32wnd->getOS2FrameWindowHandle(),2019 0, track.rclTrack.xLeft, track.rclTrack.yBottom,2020 track.rclTrack.xRight - track.rclTrack.xLeft,2021 track.rclTrack.yTop - track.rclTrack.yBottom,2022 SWP_SIZE|SWP_MOVE);2023 }2024 }2025 return;2026 }2027 return;2028 }2029 #endif2030 1924 //****************************************************************************** 2031 1925 //******************************************************************************
Note:
See TracChangeset
for help on using the changeset viewer.