- Timestamp:
- Oct 17, 1999, 2:17:46 PM (26 years ago)
- Location:
- trunk/src/user32
- Files:
-
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/user32/dc.cpp
r1281 r1333 1 /* $Id: dc.cpp,v 1.1 3 1999-10-14 09:22:38 sandervlExp $ */1 /* $Id: dc.cpp,v 1.14 1999-10-17 12:17:42 cbratschi Exp $ */ 2 2 3 3 /* … … 667 667 // { 668 668 // WinSendMsg( hwnd, /* WM_DRAW */ 0x20D, (MPARAM)hps, MPVOID ); 669 selectClientArea(wnd, pHps, &rect); 669 //CB: subclassed window haven't got a frame 670 if (!wnd->isSubclassedOS2Wnd()) selectClientArea(wnd, pHps, &rect); 670 671 // } 671 672 -
trunk/src/user32/listbox.cpp
r1297 r1333 1 /* $Id: listbox.cpp,v 1. 6 1999-10-14 18:27:55 sandervlExp $ */1 /* $Id: listbox.cpp,v 1.7 1999-10-17 12:17:42 cbratschi Exp $ */ 2 2 /* 3 3 * Listbox controls … … 24 24 * - Unicode 25 25 * - Locale handling 26 CB:27 - KillSystemTimer, SetSystemTimer28 26 */ 29 27 … … 201 199 else 202 200 { 203 201 info.nPos = descr->top_item; 204 202 205 203 info.nPage = LISTBOX_GetCurrentPageSize( hwnd, descr ); … … 212 210 info.fMask |= SIF_DISABLENOSCROLL; 213 211 214 215 216 EnableScrollBar(hwnd, SB_VERT, ESB_ENABLE_BOTH); 212 if(info.nMax > (INT)info.nPage) { 213 ShowScrollBar(hwnd, SB_VERT, TRUE); 214 EnableScrollBar(hwnd, SB_VERT, ESB_ENABLE_BOTH); 217 215 SetScrollInfo( hwnd, SB_VERT, &info, TRUE ); 218 219 220 221 EnableScrollBar(hwnd, SB_VERT, ESB_DISABLE_BOTH); 222 216 } 217 else { 218 ShowScrollBar(hwnd, SB_VERT, FALSE); 219 EnableScrollBar(hwnd, SB_VERT, ESB_DISABLE_BOTH); 220 } 223 221 224 222 if (descr->horz_extent) … … 1902 1900 static LRESULT LISTBOX_HandleLButtonUp( HWND hwnd, LB_DESCR *descr ) 1903 1901 { 1904 /* CB: implement!1905 1902 if (LISTBOX_Timer != LB_TIMER_NONE) 1906 1903 KillSystemTimer( hwnd, LB_TIMER_ID ); 1907 */ 1904 1908 1905 LISTBOX_Timer = LB_TIMER_NONE; 1909 1906 if (descr->captured) … … 1963 1960 if (!LISTBOX_HandleTimer( hwnd, descr, descr->focus_item, LISTBOX_Timer )) 1964 1961 { 1965 /* CB: implement!1966 1962 KillSystemTimer( hwnd, LB_TIMER_ID ); 1967 */ 1963 1968 1964 LISTBOX_Timer = LB_TIMER_NONE; 1969 1965 } … … 2016 2012 /* Start/stop the system timer */ 2017 2013 2018 /* CB: implement!2019 2014 if (dir != LB_TIMER_NONE) 2020 2015 SetSystemTimer( hwnd, LB_TIMER_ID, LB_SCROLL_TIMEOUT, NULL); 2021 */2022 /* CB: implement!2023 2016 else if (LISTBOX_Timer != LB_TIMER_NONE) 2024 2017 KillSystemTimer( hwnd, LB_TIMER_ID ); 2025 */ 2018 2026 2019 LISTBOX_Timer = dir; 2027 2020 } … … 2566 2559 LISTBOX_HandleMouseMove( hwnd, descr, (INT16)LOWORD(lParam), 2567 2560 (INT16)HIWORD(lParam) ); 2568 2561 return 1; //SvL: Bugfix -> PMWINDOW expects non-zero return value if 2569 2562 // we want to restore the default mouse cursor 2570 2563 … … 2678 2671 2679 2672 GetClientRect(hwnd, &clientRect); 2680 2681 2682 2683 descr->captured = TRUE; 2684 2685 2686 2673 if (PtInRect( &clientRect, mousePos )) 2674 { 2675 captured = descr->captured; 2676 descr->captured = TRUE; 2677 2678 LISTBOX_HandleMouseMove( hwnd, descr, 2679 mousePos.x, mousePos.y); 2687 2680 descr->captured = captured; 2688 2681 } 2689 2682 else 2690 2683 { 2691 2692 2684 LISTBOX_HandleMouseMove( hwnd, descr, 2685 mousePos.x, mousePos.y); 2693 2686 } 2694 2687 -
trunk/src/user32/oslibwin.cpp
r1299 r1333 1 /* $Id: oslibwin.cpp,v 1. 29 1999-10-14 19:31:30 sandervlExp $ */1 /* $Id: oslibwin.cpp,v 1.30 1999-10-17 12:17:43 cbratschi Exp $ */ 2 2 /* 3 3 * Window API wrappers for OS/2 … … 73 73 74 74 dwFrameStyle |= FCF_NOBYTEALIGN; 75 if (hwndParent == HWND_DESKTOP && dwFrameStyle & FCF_TITLEBAR) 76 75 if (hwndParent == HWND_DESKTOP && dwFrameStyle & FCF_TITLEBAR) 76 dwFrameStyle |= FCF_TASKLIST | FCF_NOMOVEWITHOWNER; 77 77 78 78 dwWinStyle &= ~WS_CLIPCHILDREN; … … 147 147 *OSFrameStyle |= FCF_SIZEBORDER; 148 148 *borderHeight = *borderWidth = 2; 149 } 149 } 150 150 else 151 151 if(dwStyle & WS_BORDER_W) … … 160 160 if(dwStyle & WS_HSCROLL_W) 161 161 *OSFrameStyle |= FCF_HORZSCROLL; 162 } 162 } 163 163 else 164 164 { … … 191 191 //Clear certain frame bits when the window doesn't have a titlebar 192 192 if(!(*OSFrameStyle & FCF_TITLEBAR)) { 193 193 *OSFrameStyle &= ~(FCF_MINBUTTON|FCF_MAXBUTTON|FCF_SYSMENU); 194 194 } 195 195 return TRUE; … … 642 642 } 643 643 } 644 644 645 645 if (flags & SWP_SIZE) 646 646 { … … 654 654 } 655 655 y = parentHeight - y - cy; 656 656 657 657 658 658 if ((pswpOld->x == x) && (pswpOld->y == y)) … … 678 678 { 679 679 BOOL rc; 680 680 681 681 WinMapWindowPoints(hwndFrame, HWND_DESKTOP, (PPOINTL)pRect, 2); 682 682 … … 764 764 //****************************************************************************** 765 765 //****************************************************************************** 766 BOOL OSLibWinShowScrollBar(HWND hwndParent, HWND hwndScroll, int scrollBar, 766 BOOL OSLibWinShowScrollBar(HWND hwndParent, HWND hwndScroll, int scrollBar, 767 767 BOOL fShow, BOOL fForceChange) 768 768 { … … 956 956 //****************************************************************************** 957 957 //****************************************************************************** 958 PVOID OSLibWinSubclassWindow(HWND hwnd,PVOID newWndProc) 959 { 960 return WinSubclassWindow(hwnd,(PFNWP)newWndProc); 961 } 962 //****************************************************************************** 963 //****************************************************************************** 964 -
trunk/src/user32/oslibwin.h
r1297 r1333 1 /* $Id: oslibwin.h,v 1.1 6 1999-10-14 18:27:57 sandervlExp $ */1 /* $Id: oslibwin.h,v 1.17 1999-10-17 12:17:43 cbratschi Exp $ */ 2 2 /* 3 3 * Window API wrappers for OS/2 … … 38 38 39 39 HWND OSLibWinCreateWindow(HWND hwndParent, ULONG dwWinStyle, ULONG dwFrameStyle, 40 char *pszName, HWND Owner, ULONG fHWND_BOTTOM, 40 char *pszName, HWND Owner, ULONG fHWND_BOTTOM, 41 41 HWND *hwndFrame, ULONG id); 42 42 … … 273 273 void OSLibTranslateScrollCmdAndMsg(ULONG *msg, ULONG *scrollcmd); 274 274 275 PVOID OSLibWinSubclassWindow(HWND hwnd,PVOID newWndProc); 276 275 277 #endif //__OSLIBWIN_H__ -
trunk/src/user32/pmframe.cpp
r1303 r1333 1 /* $Id: pmframe.cpp,v 1. 6 1999-10-14 21:37:44 sandervlExp $ */1 /* $Id: pmframe.cpp,v 1.7 1999-10-17 12:17:44 cbratschi Exp $ */ 2 2 /* 3 3 * Win32 Frame Managment Code for OS/2 … … 183 183 184 184 wndchild = Win32BaseWindow::GetWindowFromOS2FrameHandle(pswp->hwnd); 185 if(wndchild && wndchild->isChild()) 185 if(wndchild && wndchild->isChild()) 186 186 { 187 187 #if 0 188 188 SWP swp = *pswp; 189 189 190 191 192 193 190 MRESULT rc = OldFrameProc(hwnd, msg, mp1, mp2); 191 pswp->x = swp.x; 192 pswp->y = swp.y; 193 pswp->fl = swp.fl; 194 194 #endif 195 196 197 195 dprintf(("PMFRAME: WM_ADJUSTWINDOWPOS %x %x %x (%d,%d) (%d,%d)", hwnd, pswp->hwnd, pswp->fl, pswp->x, pswp->y, pswp->cx, pswp->cy)); 196 RestoreOS2TIB(); 197 return (MRESULT)0; 198 198 } 199 199 goto RunDefFrameProc; … … 272 272 273 273 GetSizeBox(win32wnd,&rect); 274 hps = WinGet PS(hwnd);274 hps = WinGetClipPS(hwnd,0,PSF_CLIPCHILDREN); 275 275 DrawSizeBox(hps,rect); 276 276 WinReleasePS(hps); … … 289 289 SetWin32TIB(); 290 290 291 WinQueryWindowRect(hwnd,&rect); 292 rect.xRight = rect.xRight-rect.xLeft; 293 rect.yTop = rect.yTop-rect.yBottom; 294 rect.xLeft = rect.yBottom = 0; 291 295 hps = WinGetClipPS(hwnd,0,PSF_CLIPCHILDREN); 292 WinQueryWindowRect(hwnd,&rect);293 296 DrawFrame(hps,&rect,win32wnd); 294 WinFillRect(hps,&rect,SYSCLR_DIALOGBACKGROUND);295 297 WinReleasePS(hps); 296 298 … … 316 318 317 319 GetSizeBox(win32wnd,&rect); 318 hps = WinGet PS(hwnd);320 hps = WinGetClipPS(hwnd,0,PSF_CLIPCHILDREN); 319 321 DrawSizeBox(hps,rect); 320 322 WinReleasePS(hps); … … 323 325 return res; 324 326 } else goto RunDefFrameProc; 325 } 326 //SvL: I doubt this is necessary. Just look at winhlp32. First it draws the 327 // the background gray and then white. 328 #if 0 329 else 327 } else 330 328 { 331 329 RECTL rect; 332 HPS hps = WinBeginPaint(hwnd,0,&rect); 333 330 HPS hps; 331 332 RestoreOS2TIB(); 333 OldFrameProc(hwnd,msg,mp1,mp2); 334 SetWin32TIB(); 335 336 WinQueryWindowRect(hwnd,&rect); 337 rect.xRight = rect.xRight-rect.xLeft; 338 rect.yTop = rect.yTop-rect.yBottom; 339 rect.xLeft = rect.yBottom = 0; 340 hps = WinGetClipPS(hwnd,0,PSF_CLIPCHILDREN); 334 341 DrawFrame(hps,&rect,win32wnd); 335 WinFillRect(hps,&rect,SYSCLR_DIALOGBACKGROUND); 336 WinEndPaint(hps); 342 WinReleasePS(hps); 337 343 338 344 RestoreOS2TIB(); 339 345 return (MRESULT)0; 340 346 } 341 #endif342 347 343 348 default: -
trunk/src/user32/pmwindow.cpp
r1324 r1333 1 /* $Id: pmwindow.cpp,v 1.3 2 1999-10-16 18:56:51 sandervlExp $ */1 /* $Id: pmwindow.cpp,v 1.33 1999-10-17 12:17:44 cbratschi Exp $ */ 2 2 /* 3 3 * Win32 Window Managment Code for OS/2 … … 257 257 258 258 if ((pswp->fl & (SWP_SIZE | SWP_MOVE | SWP_ZORDER)) == 0) break; 259 if (!win32wnd->CanReceiveSizeMsgs())break;259 if (!win32wnd->CanReceiveSizeMsgs()) break; 260 260 261 261 WinQueryWindowPos(hwnd, &swpOld); … … 263 263 if(pswp->fl & (SWP_MOVE | SWP_SIZE)) { 264 264 if (win32wnd->isChild()) { 265 266 267 268 elsebreak;269 265 if(win32wnd->getParent()) { 266 hParent = win32wnd->getParent()->getOS2WindowHandle(); 267 } 268 else break; 269 } 270 270 else 271 271 hFrame = win32wnd->getOS2FrameWindowHandle(); … … 297 297 298 298 if ((pswp->fl & (SWP_SIZE | SWP_MOVE | SWP_ZORDER)) == 0) break; 299 if (!win32wnd->CanReceiveSizeMsgs())break;299 if (!win32wnd->CanReceiveSizeMsgs()) break; 300 300 301 301 if(pswp->fl & (SWP_MOVE | SWP_SIZE)) { 302 302 if (win32wnd->isChild()) { 303 304 305 306 elsegoto RunDefWndProc; //parent has just been destroyed303 if(win32wnd->getParent()) { 304 hParent = win32wnd->getParent()->getOS2WindowHandle(); 305 } 306 else goto RunDefWndProc; //parent has just been destroyed 307 307 } 308 308 else … … 311 311 OSLibMapSWPtoWINDOWPOS(pswp, &wp, pswpo, hParent, hFrame); 312 312 313 313 SWP swpFrame; 314 314 WinQueryWindowPos(WinQueryWindow(hwnd, QW_PARENT), &swpFrame); 315 315 dprintf(("WINDOWPOSCHANGE %x %x %x (%d,%d) (%d,%d)", win32wnd->getWindowHandle(), win32wnd->getOS2FrameWindowHandle(), 316 316 swpFrame.fl,swpFrame.x, swpFrame.y, swpFrame.cx, swpFrame.cy)); 317 318 319 320 321 322 323 324 325 326 317 POINTL point; 318 319 point.x = swpFrame.x; 320 point.y = swpFrame.y; 321 if(win32wnd->getParent() != NULL) 322 { 323 WinMapWindowPoints(WinQueryWindow(hwnd, QW_PARENT), HWND_DESKTOP, 324 &point, 1); 325 } 326 point.y = OSLibQueryScreenHeight() - point.y - swpFrame.cy; 327 327 win32wnd->setWindowRect(point.x, point.y, point.x+swpFrame.cx, point.y+swpFrame.cy); 328 328 win32wnd->setClientRect(pswpo->x, pswpo->y, pswpo->x + pswpo->cx, pswpo->y + pswpo->cy); … … 614 614 //Slider messages 615 615 //************************************************************************** 616 /* CB: handled internally 616 617 case WM_VSCROLL: 617 618 case WM_HSCROLL: … … 630 631 break; 631 632 } 633 */ 632 634 633 635 case WM_CONTROL: … … 845 847 case WM_ERASEBACKGROUND: 846 848 { 847 849 dprintf(("OS2: WM_ERASEBACKGROUND %x", win32wnd->getWindowHandle())); 848 850 if (!win32wnd->isSupressErase()) { 849 851 BOOL erased = sendEraseBkgnd (win32wnd); … … 916 918 //****************************************************************************** 917 919 //****************************************************************************** 920 MRESULT EXPENTRY Win32SubclassWindowProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2) 921 { 922 Win32BaseWindow* win32wnd; 923 924 //Restore our FS selector 925 SetWin32TIB(); 926 927 win32wnd = Win32BaseWindow::GetWindowFromOS2Handle(hwnd); 928 929 if (!win32wnd) 930 { 931 dprintf(("Invalid win32wnd pointer for subclassed window %x!!", hwnd)); 932 goto RunDefWndProc; 933 } 934 935 switch (msg) 936 { 937 case WM_WINDOWPOSCHANGED: 938 { 939 PSWP pswp = (PSWP)mp1; 940 PSWP pswpo = pswp + 1; 941 WINDOWPOS wp; 942 HWND hParent = NULLHANDLE, hFrame = NULLHANDLE; 943 944 if ((pswp->fl & (SWP_SIZE | SWP_MOVE | SWP_ZORDER)) == 0) break; 945 946 if(pswp->fl & (SWP_MOVE | SWP_SIZE)) 947 hFrame = WinQueryWindow(hwnd, QW_PARENT); 948 949 OSLibMapSWPtoWINDOWPOS(pswp,&wp,pswpo,hParent,hFrame); 950 win32wnd->MsgPosChanged((LPARAM)&wp); 951 952 goto RunOldWndProc; 953 } 954 955 default: 956 goto RunDefHandler; 957 } 958 959 RunDefWndProc: 960 RestoreOS2TIB(); 961 return WinDefWindowProc(hwnd,msg,mp1,mp2); 962 963 RunOldWndProc: 964 RestoreOS2TIB(); 965 return ((PFNWP)win32wnd->getOldWndProc())(hwnd,msg,mp1,mp2); 966 967 RunDefHandler: 968 RestoreOS2TIB(); 969 return Win32WindowProc(hwnd,msg,mp1,mp2); 970 } 971 972 PVOID SubclassWithDefHandler(HWND hwnd) 973 { 974 return WinSubclassWindow(hwnd,Win32SubclassWindowProc); 975 } -
trunk/src/user32/pmwindow.h
r949 r1333 1 /* $Id: pmwindow.h,v 1. 1 1999-09-15 23:18:55 sandervlExp $ */1 /* $Id: pmwindow.h,v 1.2 1999-10-17 12:17:44 cbratschi Exp $ */ 2 2 /* 3 3 * Win32 Window Managment Code for OS/2 … … 9 9 #define __PMWINDOW_H__ 10 10 11 #define WIN32_STDCLASS 11 #define WIN32_STDCLASS "Win32WindowClass" 12 12 13 13 BOOL InitPM(); 14 15 PVOID SubclassWithDefHandler(HWND hwnd); 14 16 15 17 void RegisterSystemClasses(ULONG hModule); -
trunk/src/user32/scroll.cpp
r1306 r1333 1 /* $Id: scroll.cpp,v 1. 8 1999-10-15 09:26:23 sandervlExp $ */1 /* $Id: scroll.cpp,v 1.9 1999-10-17 12:17:44 cbratschi Exp $ */ 2 2 /* 3 3 * Scrollbar control 4 4 * 5 * Copyright 1999 Christoph Bratschi (ported from WINE)5 * Copyright 1999 Christoph Bratschi 6 6 * 7 7 * Copyright 1993 Martin Ayotte … … 10 10 * WINE version: 990923 11 11 */ 12 13 /* CB:14 - exported API removed, this functions are already implemented by Open32,15 code perhaps useful for new user3216 - only control, default scroll bars for windows need more work17 - SystemTimer not implemented18 */19 12 20 13 #include <stdlib.h> … … 24 17 #include "win32wbase.h" 25 18 #include "oslibwin.h" 19 20 static BOOL bitmapsLoaded = FALSE; 26 21 27 22 static HBITMAP hUpArrow = 0; … … 112 107 { 113 108 HINSTANCE hinst; 109 110 if (bitmapsLoaded) return; 114 111 115 112 //CB: Open32 hack to load our own bitmap … … 128 125 hRgArrowI = NativeLoadBitmap( hinst, MAKEINTRESOURCEA(OBM_RGARROWI) ); 129 126 FreeLibrary(hinst); 127 128 bitmapsLoaded = TRUE; 130 129 } 131 130 132 131 /*********************************************************************** 133 * SCROLL_GetPtrScrollInfo 134 */ 135 static SCROLLBAR_INFO *SCROLL_GetPtrScrollInfo( HWND hwnd, INT nBar ) 136 { 137 SCROLLBAR_INFO *infoPtr; 132 * SCROLL_GetInfoPtr 133 */ 134 static SCROLLBAR_INFO *SCROLL_GetInfoPtr( HWND hwnd, INT nBar ) 135 { 136 Win32BaseWindow *win32wnd; 137 HWND hwndFrame; 138 138 139 139 switch(nBar) 140 140 { 141 /* CB: implement this later!142 141 case SB_HORZ: 143 infoPtr = (SCROLLBAR_INFO *)wndPtr->pHScroll;144 break;145 142 case SB_VERT: 146 infoPtr = (SCROLLBAR_INFO *)wndPtr->pVScroll; 147 break; 148 */ 143 win32wnd = Win32BaseWindow::GetWindowFromHandle(hwnd); 144 if (!win32wnd) return NULL; 145 hwndFrame = OSLibWinQueryWindow(win32wnd->getOS2WindowHandle(),QWOS_PARENT); 146 win32wnd = Win32BaseWindow::GetWindowFromOS2FrameHandle(hwndFrame); 147 if (!win32wnd) return NULL; 148 return win32wnd->getScrollInfo(nBar); 149 149 150 case SB_CTL: 150 infoPtr = (SCROLLBAR_INFO *)GetInfoPtr(hwnd); 151 break; 152 default: return NULL; 153 } 154 155 if (!infoPtr) /* Create the info structure if needed */ 156 { 157 infoPtr = (SCROLLBAR_INFO*)malloc(sizeof(SCROLLBAR_INFO)); 158 infoPtr->MinVal = infoPtr->CurVal = infoPtr->Page = 0; 159 infoPtr->MaxVal = 100; 160 infoPtr->flags = ESB_ENABLE_BOTH; 161 162 //CB: store in window class if not control! 163 SetInfoPtr(hwnd,(DWORD)infoPtr); 164 165 if (!hUpArrow) SCROLL_LoadBitmaps(); 166 } 167 return infoPtr; 168 } 169 170 171 /*********************************************************************** 172 * SCROLL_GetScrollInfo 173 */ 174 static SCROLLBAR_INFO *SCROLL_GetScrollInfo( HWND hwnd, INT nBar ) 175 { 176 Win32BaseWindow *window; 177 178 window = Win32BaseWindow::GetWindowFromHandle(hwnd); 179 if(!window && nBar != SB_CTL) { 180 dprintf(("SCROLL_GetScrollInfo window %x not found!", hwnd)); 181 SetLastError(ERROR_INVALID_WINDOW_HANDLE); 182 return NULL; 183 } 184 185 if (window) { 186 return window->getScrollInfo(nBar); 187 } 188 189 return SCROLL_GetPtrScrollInfo( hwnd, nBar ); 151 return (SCROLLBAR_INFO*)GetInfoPtr(hwnd); 152 } 153 154 return NULL; 190 155 } 191 156 … … 208 173 INT pixels; 209 174 BOOL vertical; 210 DWORD dwStyle = GetWindowLongA(hwnd,GWL_STYLE);211 175 RECT rectClient; 212 176 213 177 switch(nBar) 214 178 { 215 /* CB: implement later!216 179 case SB_HORZ: 217 lprect->left = wndPtr->rectClient.left - wndPtr->rectWindow.left; 218 lprect->top = wndPtr->rectClient.bottom - wndPtr->rectWindow.top; 219 lprect->right = wndPtr->rectClient.right - wndPtr->rectWindow.left; 220 lprect->bottom = lprect->top + GetSystemMetrics(SM_CYHSCROLL); 221 if(dwStyle & WS_BORDER) { 222 lprect->left--; 223 lprect->right++; 224 } else if(dwStyle & WS_VSCROLL) 225 lprect->right++; 226 vertical = FALSE; 180 case SB_VERT: 181 GetClientRect( hwnd, lprect ); 182 vertical = (nBar == SB_VERT); 227 183 break; 228 184 229 case SB_VERT:230 lprect->left = wndPtr->rectClient.right - wndPtr->rectWindow.left;231 lprect->top = wndPtr->rectClient.top - wndPtr->rectWindow.top;232 lprect->right = lprect->left + GetSystemMetrics(SM_CXVSCROLL);233 lprect->bottom = wndPtr->rectClient.bottom - wndPtr->rectWindow.top;234 if(wndPtr->dwStyle & WS_BORDER) {235 lprect->top--;236 lprect->bottom++;237 } else if(wndPtr->dwStyle & WS_HSCROLL)238 lprect->bottom++;239 vertical = TRUE;240 break;241 */242 185 case SB_CTL: 243 GetClientRect( hwnd, lprect ); 244 vertical = ((dwStyle & SBS_VERT) != 0); 245 break; 186 { 187 DWORD dwStyle = GetWindowLongA(hwnd,GWL_STYLE); 188 189 GetClientRect( hwnd, lprect ); 190 vertical = ((dwStyle & SBS_VERT) != 0); 191 break; 192 } 246 193 247 194 default: … … 262 209 else 263 210 { 264 SCROLLBAR_INFO *info = SCROLL_Get PtrScrollInfo( hwnd, nBar );211 SCROLLBAR_INFO *info = SCROLL_GetInfoPtr( hwnd, nBar ); 265 212 266 213 *arrowSize = GetSystemMetrics(SM_CXVSCROLL); … … 454 401 * Draw the moving thumb rectangle. 455 402 */ 456 static void SCROLL_DrawMovingThumb _9x( HDC hdc, RECT *rect, BOOL vertical,403 static void SCROLL_DrawMovingThumb( HDC hdc, RECT *rect, BOOL vertical, 457 404 INT arrowSize, INT thumbSize ) 458 405 { … … 477 424 478 425 SCROLL_MovingThumb = !SCROLL_MovingThumb; 479 }480 //******************************************************************************481 //******************************************************************************482 static void SCROLL_DrawMovingThumb( HDC hdc, RECT *rect, BOOL vertical,483 INT arrowSize, INT thumbSize )484 {485 SCROLL_DrawMovingThumb_9x( hdc, rect, vertical, arrowSize, thumbSize );486 426 } 487 427 /*********************************************************************** … … 511 451 else 512 452 { 513 //CB: implement!514 //hBrush = DEFWND_ControlColor( hdc, CTLCOLOR_SCROLLBAR);453 hBrush = (HBRUSH)SendMessageA( hwnd, WM_CTLCOLORSCROLLBAR, 454 (WPARAM)hdc,(LPARAM)hwnd); 515 455 } 516 456 … … 591 531 BOOL Save_SCROLL_MovingThumb = SCROLL_MovingThumb; 592 532 533 //SCROLL_DrawInterior_9x(hwnd,hdc,nBar,rect,arrowSize,thumbSize,thumbPos,flags,vertical,top_selected,bottom_selected); 534 //return; //CB: improve! 535 593 536 if (Save_SCROLL_MovingThumb && 594 537 (SCROLL_TrackingWin == hwnd) && … … 606 549 (WPARAM)hdc,(LPARAM)hwnd); 607 550 } else { 608 //CB: implement! 609 //hBrush = DEFWND_ControlColor( hdc, CTLCOLOR_SCROLLBAR ); 551 hBrush = (HBRUSH)SendMessageA( hwnd, WM_CTLCOLORSCROLLBAR, 552 (WPARAM)hdc,(LPARAM)hwnd); 553 610 554 } 611 555 … … 706 650 RECT rect; 707 651 BOOL vertical; 708 SCROLLBAR_INFO *infoPtr = SCROLL_Get PtrScrollInfo( hwnd, nBar );652 SCROLLBAR_INFO *infoPtr = SCROLL_GetInfoPtr( hwnd, nBar ); 709 653 BOOL Save_SCROLL_MovingThumb = SCROLL_MovingThumb; 710 DWORD dwStyle = GetWindowLongA(hwnd,GWL_STYLE);711 712 if (!infoPtr ||713 ((nBar == SB_VERT) && !(dwStyle & WS_VSCROLL)) ||714 ((nBar == SB_HORZ) && !(dwStyle & WS_HSCROLL))) return;715 //if (!WIN_IsWindowDrawable( hwnd, FALSE )) return; //CB: what's that???716 654 717 655 vertical = SCROLL_GetScrollBarRect( hwnd, nBar, &rect, … … 754 692 BOOL arrows, BOOL interior ) 755 693 { 756 HDC hdc = GetDCEx( hwnd, 0, 757 DCX_CACHE | ((nBar == SB_CTL) ? 0 : DCX_WINDOW) ); 694 //HDC hdc = GetDCEx( hwnd, 0, 695 // DCX_CACHE | ((nBar == SB_CTL) ? 0 : DCX_WINDOW) ); 696 HDC hdc; 697 698 return; 699 //CB: bug: paints in client window! 700 // GetClientRect returns wrong window size after GetDC 701 // why?!? 702 758 703 if (!hdc) return; 759 704 … … 811 756 HDC hdc; 812 757 813 SCROLLBAR_INFO *infoPtr = SCROLL_Get ScrollInfo( hwnd, nBar );758 SCROLLBAR_INFO *infoPtr = SCROLL_GetInfoPtr( hwnd, nBar ); 814 759 if (!infoPtr) return; 815 760 if ((SCROLL_trackHitTest == SCROLL_NOWHERE) && (msg != WM_LBUTTONDOWN)) 816 761 return; 817 762 818 hdc = GetDCEx( hwnd, 0, DCX_CACHE | ((nBar == SB_CTL) ? 0 : DCX_WINDOW));819 763 vertical = SCROLL_GetScrollBarRect( hwnd, nBar, &rect, 820 764 &arrowSize, &thumbSize, &thumbPos ); 821 hwndOwner = (nBar == SB_CTL) ? GetParent(hwnd) : hwnd; 765 if (nBar == SB_CTL) hwndOwner = GetParent(hwnd); else 766 { 767 Win32BaseWindow *win32wnd; 768 HWND hwndFrame; 769 770 win32wnd = Win32BaseWindow::GetWindowFromHandle(hwnd); 771 if (!win32wnd) return; 772 hwndFrame = OSLibWinQueryWindow(win32wnd->getOS2WindowHandle(),QWOS_PARENT); 773 win32wnd = Win32BaseWindow::GetWindowFromOS2FrameHandle(hwndFrame); 774 if (!win32wnd) return; 775 hwndOwner = win32wnd->getWindowHandle(); 776 } 777 822 778 hwndCtl = (nBar == SB_CTL) ? hwnd : 0; 823 779 … … 854 810 } 855 811 812 hdc = GetDCEx( hwnd, 0, DCX_CACHE | ((nBar == SB_CTL) ? 0 : DCX_WINDOW)); 813 856 814 //TRACE("Event: hwnd=%04x bar=%d msg=%x pt=%ld,%ld hit=%d\n", 857 815 // hwnd, nBar, msg, pt.x, pt.y, hittest ); … … 872 830 SB_LINEUP, hwndCtl ); 873 831 } 874 //CB:SetSystemTimer( hwnd, SCROLL_TIMER, (msg == WM_LBUTTONDOWN) ?875 //SCROLL_FIRST_DELAY : SCROLL_REPEAT_DELAY,876 //(TIMERPROC)0 );877 } 878 //CB:else KillSystemTimer( hwnd, SCROLL_TIMER );832 SetSystemTimer( hwnd, SCROLL_TIMER, (msg == WM_LBUTTONDOWN) ? 833 SCROLL_FIRST_DELAY : SCROLL_REPEAT_DELAY, 834 (TIMERPROC)0 ); 835 } 836 else KillSystemTimer( hwnd, SCROLL_TIMER ); 879 837 break; 880 838 … … 889 847 SendMessageA( hwndOwner, vertical ? WM_VSCROLL : WM_HSCROLL, 890 848 SB_PAGEUP, hwndCtl ); 891 //CB:SetSystemTimer( hwnd, SCROLL_TIMER, (msg == WM_LBUTTONDOWN) ?892 //SCROLL_FIRST_DELAY : SCROLL_REPEAT_DELAY,893 //(TIMERPROC)0 );849 SetSystemTimer( hwnd, SCROLL_TIMER, (msg == WM_LBUTTONDOWN) ? 850 SCROLL_FIRST_DELAY : SCROLL_REPEAT_DELAY, 851 (TIMERPROC)0 ); 894 852 } 895 853 } 896 //CB:else KillSystemTimer( hwnd, SCROLL_TIMER );854 else KillSystemTimer( hwnd, SCROLL_TIMER ); 897 855 break; 898 856 … … 955 913 SendMessageA( hwndOwner, vertical ? WM_VSCROLL : WM_HSCROLL, 956 914 SB_PAGEDOWN, hwndCtl ); 957 //CB:SetSystemTimer( hwnd, SCROLL_TIMER, (msg == WM_LBUTTONDOWN) ?958 //SCROLL_FIRST_DELAY : SCROLL_REPEAT_DELAY,959 //(TIMERPROC)0 );915 SetSystemTimer( hwnd, SCROLL_TIMER, (msg == WM_LBUTTONDOWN) ? 916 SCROLL_FIRST_DELAY : SCROLL_REPEAT_DELAY, 917 (TIMERPROC)0 ); 960 918 } 961 919 } 962 //CB:else KillSystemTimer( hwnd, SCROLL_TIMER );920 else KillSystemTimer( hwnd, SCROLL_TIMER ); 963 921 break; 964 922 … … 973 931 SB_LINEDOWN, hwndCtl ); 974 932 } 975 //CB:SetSystemTimer( hwnd, SCROLL_TIMER, (msg == WM_LBUTTONDOWN) ?976 //SCROLL_FIRST_DELAY : SCROLL_REPEAT_DELAY,977 //(TIMERPROC)0 );978 } 979 //CB:else KillSystemTimer( hwnd, SCROLL_TIMER );933 SetSystemTimer( hwnd, SCROLL_TIMER, (msg == WM_LBUTTONDOWN) ? 934 SCROLL_FIRST_DELAY : SCROLL_REPEAT_DELAY, 935 (TIMERPROC)0 ); 936 } 937 else KillSystemTimer( hwnd, SCROLL_TIMER ); 980 938 break; 981 939 } … … 1008 966 switch(message) 1009 967 { 968 case WM_NCCREATE: 969 { 970 SCROLLBAR_INFO *infoPtr = (SCROLLBAR_INFO*)malloc(sizeof(SCROLLBAR_INFO)); 971 972 infoPtr->MinVal = infoPtr->CurVal = infoPtr->Page = 0; 973 infoPtr->MaxVal = 100; 974 infoPtr->flags = ESB_ENABLE_BOTH; 975 976 SetInfoPtr(hwnd,(DWORD)infoPtr); 977 978 if (!bitmapsLoaded) SCROLL_LoadBitmaps(); 979 980 return TRUE; 981 } 1010 982 case WM_CREATE: 1011 983 { … … 1014 986 { 1015 987 //FIXME("Unimplemented style SBS_SIZEBOX.\n" ); 1016 return 0; 988 return 0; //CB: implement! (for frames/toolbar already done) 1017 989 } 1018 990 … … 1040 1012 } 1041 1013 } 1042 if (!hUpArrow) SCROLL_LoadBitmaps(); 1014 1043 1015 //TRACE("ScrollBar creation, hwnd=%04x\n", hwnd ); 1044 1016 return 0; … … 1081 1053 1082 1054 case SBM_SETRANGE: 1083 SetScrollRange( hwnd, SB_CTL, wParam, lParam, FALSE ); 1084 return 0; /* FIXME: return previous position */ 1055 { 1056 SCROLLBAR_INFO *infoPtr = SCROLL_GetInfoPtr(hwnd,SB_CTL); 1057 INT oldPos = infoPtr->CurVal; 1058 1059 SetScrollRange(hwnd,SB_CTL,wParam,lParam,FALSE); 1060 return (oldPos != infoPtr->CurVal) ? infoPtr->CurVal:0; 1061 } 1085 1062 1086 1063 case SBM_GETRANGE: … … 1092 1069 1093 1070 case SBM_SETRANGEREDRAW: 1094 SetScrollRange( hwnd, SB_CTL, wParam, lParam, TRUE ); 1095 return 0; /* FIXME: return previous position */ 1071 { 1072 SCROLLBAR_INFO *infoPtr = SCROLL_GetInfoPtr(hwnd,SB_CTL); 1073 INT oldPos = infoPtr->CurVal; 1074 1075 SetScrollRange(hwnd,SB_CTL,wParam,lParam,TRUE); 1076 return (oldPos != infoPtr->CurVal) ? infoPtr->CurVal:0; 1077 } 1096 1078 1097 1079 case SBM_SETSCROLLINFO: … … 1114 1096 1115 1097 default: 1116 //SvL: BUGFIX: Send WM_NCCREATE to defwndproc, return value 0 cancels window creation! 1117 // if (message >= WM_USER) 1118 //WARN("unknown msg %04x wp=%04x lp=%08lx\n", 1119 // message, wParam, lParam ); 1120 return DefWindowProcA( hwnd, message, wParam, lParam ); 1098 return DefWindowProcA( hwnd, message, wParam, lParam ); 1121 1099 } 1122 1100 return 0; 1101 } 1102 1103 /* frame handlers */ 1104 1105 VOID SCROLL_SubclassScrollBars(HWND hwndHorz,HWND hwndVert) 1106 { 1107 if (hwndHorz) 1108 { 1109 SetWindowLongA(hwndHorz,GWL_WNDPROC,(ULONG)HorzScrollBarWndProc); 1110 //windowClass = Win32WndClass::FindClass(cs->hInstance, (LPSTR)classAtom); 1111 // InvalidateRect(hwndHorz,NULL,FALSE); 1112 } 1113 1114 if (hwndVert) 1115 { 1116 SetWindowLongA(hwndVert,GWL_WNDPROC,(ULONG)VertScrollBarWndProc); 1117 // InvalidateRect(hwndVert,NULL,FALSE); 1118 } 1119 1120 if (!bitmapsLoaded) SCROLL_LoadBitmaps(); 1121 } 1122 1123 LRESULT WINAPI HorzScrollBarWndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam ) 1124 { 1125 switch (message) 1126 { 1127 case WM_LBUTTONDOWN: 1128 case WM_LBUTTONUP: 1129 case WM_MOUSEMOVE: 1130 case WM_SYSTIMER: 1131 { 1132 POINT pt; 1133 CONV_POINT16TO32( (POINT16 *)&lParam, &pt ); 1134 SCROLL_HandleScrollEvent( hwnd, SB_HORZ, message, pt ); 1135 } 1136 break; 1137 1138 case WM_ERASEBKGND: 1139 return 1; 1140 1141 case WM_GETDLGCODE: 1142 return DLGC_WANTARROWS; /* Windows returns this value */ 1143 1144 case WM_PAINT: 1145 { 1146 PAINTSTRUCT ps; 1147 1148 HDC hdc = BeginPaint( hwnd, &ps ); 1149 SCROLL_DrawScrollBar( hwnd, hdc, SB_HORZ, TRUE, TRUE ); 1150 EndPaint( hwnd, &ps ); 1151 } 1152 break; 1153 1154 case SBM_SETPOS: 1155 return SetScrollPos( hwnd, SB_HORZ, wParam, (BOOL)lParam ); 1156 1157 case SBM_GETPOS: 1158 return GetScrollPos( hwnd, SB_HORZ ); 1159 1160 case SBM_SETRANGE: 1161 { 1162 SCROLLBAR_INFO *infoPtr = SCROLL_GetInfoPtr(hwnd,SB_HORZ); 1163 INT oldPos = infoPtr->CurVal; 1164 1165 SetScrollRange(hwnd,SB_HORZ,wParam,lParam,FALSE); 1166 return (oldPos != infoPtr->CurVal) ? infoPtr->CurVal:0; 1167 } 1168 1169 case SBM_GETRANGE: 1170 GetScrollRange( hwnd, SB_HORZ, (LPINT)wParam, (LPINT)lParam ); 1171 return 0; 1172 1173 case SBM_ENABLE_ARROWS: 1174 return EnableScrollBar( hwnd, SB_HORZ, wParam ); 1175 1176 case SBM_SETRANGEREDRAW: 1177 { 1178 SCROLLBAR_INFO *infoPtr = SCROLL_GetInfoPtr(hwnd,SB_HORZ); 1179 INT oldPos = infoPtr->CurVal; 1180 1181 SetScrollRange(hwnd,SB_HORZ,wParam,lParam,TRUE); 1182 return (oldPos != infoPtr->CurVal) ? infoPtr->CurVal:0; 1183 } 1184 1185 case SBM_SETSCROLLINFO: 1186 return SetScrollInfo( hwnd, SB_HORZ, (SCROLLINFO *)lParam, wParam ); 1187 1188 case SBM_GETSCROLLINFO: 1189 return GetScrollInfo( hwnd, SB_HORZ, (SCROLLINFO *)lParam ); 1190 1191 default: 1192 return DefWindowProcA(hwnd,message,wParam,lParam); 1193 } 1194 1195 return 0; 1196 } 1197 1198 LRESULT WINAPI VertScrollBarWndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam ) 1199 { 1200 switch (message) 1201 { 1202 case WM_LBUTTONDOWN: 1203 case WM_LBUTTONUP: 1204 case WM_MOUSEMOVE: 1205 case WM_SYSTIMER: 1206 { 1207 POINT pt; 1208 CONV_POINT16TO32( (POINT16 *)&lParam, &pt ); 1209 SCROLL_HandleScrollEvent( hwnd, SB_VERT, message, pt ); 1210 } 1211 break; 1212 1213 case WM_ERASEBKGND: 1214 return 1; 1215 1216 case WM_GETDLGCODE: 1217 return DLGC_WANTARROWS; /* Windows returns this value */ 1218 1219 case WM_PAINT: 1220 { 1221 PAINTSTRUCT ps; 1222 1223 HDC hdc = BeginPaint( hwnd, &ps ); 1224 SCROLL_DrawScrollBar( hwnd, hdc, SB_VERT, TRUE, TRUE ); 1225 EndPaint( hwnd, &ps ); 1226 } 1227 break; 1228 1229 case SBM_SETPOS: 1230 return SetScrollPos( hwnd, SB_VERT, wParam, (BOOL)lParam ); 1231 1232 case SBM_GETPOS: 1233 return GetScrollPos( hwnd, SB_VERT ); 1234 1235 case SBM_SETRANGE: 1236 { 1237 SCROLLBAR_INFO *infoPtr = SCROLL_GetInfoPtr(hwnd,SB_VERT); 1238 INT oldPos = infoPtr->CurVal; 1239 1240 SetScrollRange(hwnd,SB_VERT,wParam,lParam,FALSE); 1241 return (oldPos != infoPtr->CurVal) ? infoPtr->CurVal:0; 1242 } 1243 1244 case SBM_GETRANGE: 1245 GetScrollRange( hwnd, SB_VERT, (LPINT)wParam, (LPINT)lParam ); 1246 return 0; 1247 1248 case SBM_ENABLE_ARROWS: 1249 return EnableScrollBar( hwnd, SB_VERT, wParam ); 1250 1251 case SBM_SETRANGEREDRAW: 1252 { 1253 SCROLLBAR_INFO *infoPtr = SCROLL_GetInfoPtr(hwnd,SB_VERT); 1254 INT oldPos = infoPtr->CurVal; 1255 1256 SetScrollRange(hwnd,SB_VERT,wParam,lParam,TRUE); 1257 return (oldPos != infoPtr->CurVal) ? infoPtr->CurVal:0; 1258 } 1259 1260 case SBM_SETSCROLLINFO: 1261 return SetScrollInfo( hwnd, SB_VERT, (SCROLLINFO *)lParam, wParam ); 1262 1263 case SBM_GETSCROLLINFO: 1264 return GetScrollInfo( hwnd, SB_VERT, (SCROLLINFO *)lParam ); 1265 1266 default: 1267 return DefWindowProcA(hwnd,message,wParam,lParam); 1268 } 1269 1270 return 0; 1123 1271 } 1124 1272 … … 1148 1296 INT retVal; 1149 1297 1298 /* CB: handled here, todo: hide/show 1150 1299 window = Win32BaseWindow::GetWindowFromHandle(hwnd); 1151 1300 if(!window && nBar != SB_CTL) { … … 1157 1306 return window->setScrollInfo(nBar, (SCROLLINFO *)info, bRedraw); 1158 1307 } 1308 */ 1159 1309 1160 1310 retVal = SCROLL_SetScrollInfo( hwnd, nBar, info, &action ); … … 1187 1337 *action = 0; 1188 1338 1189 if (!(infoPtr = SCROLL_Get ScrollInfo(hwnd, nBar))) return 0;1339 if (!(infoPtr = SCROLL_GetInfoPtr(hwnd, nBar))) return 0; 1190 1340 if (info->fMask & ~(SIF_ALL | SIF_DISABLENOSCROLL)) return 0; 1191 1341 if ((info->cbSize != sizeof(*info)) && … … 1303 1453 SCROLLBAR_INFO *infoPtr; 1304 1454 1305 if (!(infoPtr = SCROLL_Get ScrollInfo( hwnd, nBar ))) return FALSE;1455 if (!(infoPtr = SCROLL_GetInfoPtr( hwnd, nBar ))) return FALSE; 1306 1456 if (info->fMask & ~(SIF_ALL | SIF_DISABLENOSCROLL)) return FALSE; 1307 1457 if ((info->cbSize != sizeof(*info)) && … … 1341 1491 1342 1492 dprintf(("SetScrollPos %x %d %d %d", hwnd, nBar, nPos, bRedraw)); 1343 if (!(infoPtr = SCROLL_Get ScrollInfo( hwnd, nBar ))) return 0;1493 if (!(infoPtr = SCROLL_GetInfoPtr( hwnd, nBar ))) return 0; 1344 1494 oldPos = infoPtr->CurVal; 1345 1495 info.cbSize = sizeof(info); … … 1368 1518 dprintf(("GetScrollPos %x %d", hwnd, nBar)); 1369 1519 1370 infoPtr = SCROLL_Get ScrollInfo( hwnd, nBar );1520 infoPtr = SCROLL_GetInfoPtr( hwnd, nBar ); 1371 1521 if (!infoPtr) return 0; 1372 1522 … … 1442 1592 SCROLLBAR_INFO *infoPtr; 1443 1593 1444 infoPtr = SCROLL_Get ScrollInfo( hwnd, nBar );1594 infoPtr = SCROLL_GetInfoPtr( hwnd, nBar ); 1445 1595 if (!infoPtr) 1446 1596 { … … 1617 1767 if (nBar == SB_BOTH) 1618 1768 { 1619 if (!(infoPtr = SCROLL_Get ScrollInfo( hwnd, SB_VERT ))) return FALSE;1769 if (!(infoPtr = SCROLL_GetInfoPtr( hwnd, SB_VERT ))) return FALSE; 1620 1770 if (!(bFineWithMe = (infoPtr->flags == flags)) ) 1621 1771 { … … 1628 1778 bFineWithMe = TRUE; 1629 1779 1630 if (!(infoPtr = SCROLL_Get ScrollInfo( hwnd, nBar ))) return FALSE;1780 if (!(infoPtr = SCROLL_GetInfoPtr( hwnd, nBar ))) return FALSE; 1631 1781 if (bFineWithMe && infoPtr->flags == flags) return FALSE; 1632 1782 infoPtr->flags = flags; -
trunk/src/user32/user32exp.def
r1025 r1333 565 565 _wvsprintfA@12 @579 566 566 _wvsprintfW@12 @580 567 _GetMenuInfo@8 @800 568 _SetMenuInfo@8 @801 567 569 _GetMonitorInfoW@8 @1000 568 570 _GetMonitorInfoA@8 @1001 -
trunk/src/user32/win32dlg.cpp
r1320 r1333 1 /* $Id: win32dlg.cpp,v 1.1 5 1999-10-16 11:05:38 sandervlExp $ */1 /* $Id: win32dlg.cpp,v 1.16 1999-10-17 12:17:44 cbratschi Exp $ */ 2 2 /* 3 3 * Win32 Dialog Code for OS/2 … … 261 261 ShowWindow( SW_SHOW ); 262 262 263 //CB: 100% CPU usage, need a better solution with OSLibWinGetMsg 264 // is WM_ENTERIDLE used and leaving away breaks an application? 265 // this style was useful for Win3.1 but today there are threads 266 // solution: send only few WM_ENTERIDLE messages 267 268 #if 1 269 while (TRUE) 270 { 271 if (!OSLibWinPeekMsg(&msg,0,0,0,MSG_NOREMOVE)) 272 { 273 if(!(getStyle() & DS_NOIDLEMSG)) 274 topOwner->SendMessageA(WM_ENTERIDLE,MSGF_DIALOGBOX,getWindowHandle()); 275 OSLibWinGetMsg(&msg,0,0,0); 276 } else OSLibWinPeekMsg(&msg,0,0,0,MSG_REMOVE); 277 278 if(msg.message == WM_QUIT) 279 { 280 dprintf(("Win32Dialog::doDialogBox: received WM_QUIT")); 281 break; 282 } 283 if (!IsDialogMessageA( getWindowHandle(), &msg)) 284 { 285 TranslateMessage( &msg ); 286 DispatchMessageA( &msg ); 287 } 288 if (dialogFlags & DF_END) break; 289 } 290 #else 263 291 while (TRUE) { 264 292 // while (OSLibWinPeekMsg(&msg, getWindowHandle(), owner, MSGF_DIALOGBOX, … … 284 312 } 285 313 } 314 #endif 286 315 topOwner->EnableWindow( TRUE ); 287 316 } -
trunk/src/user32/win32wbase.cpp
r1322 r1333 1 /* $Id: win32wbase.cpp,v 1.4 7 1999-10-16 14:51:42 sandervlExp $ */1 /* $Id: win32wbase.cpp,v 1.48 1999-10-17 12:17:45 cbratschi Exp $ */ 2 2 /* 3 3 * Win32 Window Base Class for OS/2 … … 40 40 #include "pmframe.h" 41 41 #include "win32wdesktop.h" 42 #include "pmwindow.h" 42 43 #include <wprocess.h> 43 44 … … 85 86 //****************************************************************************** 86 87 //****************************************************************************** 88 Win32BaseWindow::Win32BaseWindow(HWND os2Handle,VOID* win32WndProc) : GenericObject(&windows,OBJTYPE_WINDOW) 89 { 90 Init(); 91 OS2Hwnd = OS2HwndFrame = os2Handle; 92 dwStyle = WS_VISIBLE; 93 setWindowProc((WNDPROC)win32WndProc); 94 fIsSubclassedOS2Wnd = TRUE; 95 fFirstShow = FALSE; 96 97 //CB: replace by a secure method 98 99 if(OSLibWinSetWindowULong(OS2Hwnd, OFFSET_WIN32WNDPTR, (ULONG)this) == FALSE) { 100 dprintf(("WM_CREATE: WinSetWindowULong %X failed!!", OS2Hwnd)); 101 SetLastError(ERROR_OUTOFMEMORY); //TODO: Better error 102 return; 103 } 104 if(OSLibWinSetWindowULong(OS2Hwnd, OFFSET_WIN32PM_MAGIC, WIN32PM_MAGIC) == FALSE) { 105 dprintf(("WM_CREATE: WinSetWindowULong2 %X failed!!", OS2Hwnd)); 106 SetLastError(ERROR_OUTOFMEMORY); //TODO: Better error 107 return; 108 } 109 110 OSLibWinQueryWindowRect(OS2Hwnd,&rectWindow); 111 rectClient = rectWindow; 112 rectClient.bottom -= rectClient.top; 113 rectClient.top = 0; 114 rectClient.right -= rectClient.left; 115 rectClient.left = 0; 116 117 setOldWndProc(SubclassWithDefHandler(OS2Hwnd)); 118 } 119 //****************************************************************************** 120 //****************************************************************************** 87 121 Win32BaseWindow::Win32BaseWindow(CREATESTRUCTA *lpCreateStructA, ATOM classAtom, BOOL isUnicode) 88 122 : GenericObject(&windows, OBJTYPE_WINDOW), ChildWindow() … … 97 131 { 98 132 isUnicode = FALSE; 133 fIsSubclassedOS2Wnd = FALSE; 99 134 fFirstShow = TRUE; 100 135 fIsDialog = FALSE; … … 200 235 horzScrollInfo = NULL; 201 236 } 202 //TODO: Destroy windows if they're not associated with our window anymore (showwindow false)?203 // hwndHorzScroll204 // hwndVertScroll205 206 237 } 207 238 //****************************************************************************** … … 584 615 } 585 616 617 //CB: switch off -> OS/2 scrollbars 618 subclassScrollBars(dwStyle & WS_HSCROLL,dwStyle & WS_VSCROLL); 619 586 620 fakeWinBase.hwndThis = OS2Hwnd; 587 621 fakeWinBase.pWindowClass = windowClass; … … 690 724 Win32BaseWindow *child; 691 725 726 if (isSubclassedOS2Wnd) OSLibWinSubclassWindow(OS2Hwnd,pOldWndProc); 727 692 728 //According to the SDK, WM_PARENTNOTIFY messages are sent to the parent (this window) 693 729 //before any window destruction has begun … … 699 735 } 700 736 SendInternalMessageA(WM_DESTROY, 0, 0); 737 738 if (hwndHorzScroll && OSLibWinQueryWindow(hwndHorzScroll,QWOS_PARENT) == OSLIB_HWND_OBJECT) OSLibWinDestroyWindow(hwndHorzScroll); 739 if (hwndVertScroll && OSLibWinQueryWindow(hwndVertScroll,QWOS_PARENT) == OSLIB_HWND_OBJECT) OSLibWinDestroyWindow(hwndVertScroll); 701 740 702 741 fIsDestroyed = TRUE; … … 1007 1046 break; 1008 1047 case BUTTON_LEFTDBLCLICK: 1009 if (windowClass ->getClassLongA(GCL_STYLE) & CS_DBLCLKS)1048 if (windowClass && windowClass->getClassLongA(GCL_STYLE) & CS_DBLCLKS) 1010 1049 { 1011 1050 win32msg = WM_LBUTTONDBLCLK; … … 1026 1065 break; 1027 1066 case BUTTON_RIGHTDBLCLICK: 1028 if (windowClass ->getClassLongA(GCL_STYLE) & CS_DBLCLKS)1067 if (windowClass && windowClass->getClassLongA(GCL_STYLE) & CS_DBLCLKS) 1029 1068 { 1030 1069 win32msg = WM_RBUTTONDBLCLK; … … 1045 1084 break; 1046 1085 case BUTTON_MIDDLEDBLCLICK: 1047 if (windowClass ->getClassLongA(GCL_STYLE) & CS_DBLCLKS)1086 if (windowClass && windowClass->getClassLongA(GCL_STYLE) & CS_DBLCLKS) 1048 1087 { 1049 1088 win32msg = WM_MBUTTONDBLCLK; … … 1186 1225 case SB_HORZ: 1187 1226 if(horzScrollInfo) { 1188 horzScrollInfo->CurVal = OSLibWinGetScrollPos(OS2HwndFrame, hwndHorzScroll);1227 //CB:horzScrollInfo->CurVal = OSLibWinGetScrollPos(OS2HwndFrame, hwndHorzScroll); 1189 1228 return horzScrollInfo; 1190 1229 } … … 1192 1231 case SB_VERT: 1193 1232 if(vertScrollInfo) { 1194 vertScrollInfo->CurVal = OSLibWinGetScrollPos(OS2HwndFrame, hwndVertScroll);1233 //CB:vertScrollInfo->CurVal = OSLibWinGetScrollPos(OS2HwndFrame, hwndVertScroll); 1195 1234 return vertScrollInfo; 1196 1235 } … … 1208 1247 ULONG scrollType; 1209 1248 int new_flags; 1249 1250 //CB: handled internally 1251 return 0; 1210 1252 1211 1253 switch(nBar) { … … 1327 1369 return infoPtr->CurVal; 1328 1370 } 1371 /***********************************************************************/ 1372 /***********************************************************************/ 1373 VOID Win32BaseWindow::subclassScrollBars(BOOL subHorz,BOOL subVert) 1374 { 1375 SCROLL_SubclassScrollBars(subHorz ? hwndHorzScroll:0,subVert ? hwndVertScroll:0); 1376 } 1329 1377 /*********************************************************************** 1330 1378 * NC_HandleSysCommand … … 1567 1615 int rc; 1568 1616 1569 if (!windowClass ->getBackgroundBrush()) return 0;1617 if (!windowClass || !windowClass->getBackgroundBrush()) return 0; 1570 1618 1571 1619 rc = GetClipBox( (HDC)wParam, &rect ); … … 1625 1673 { 1626 1674 LRESULT result = 0; 1675 if (!windowClass) return result; 1627 1676 int index = GCL_HICON; 1628 1677 -
trunk/src/user32/win32wbase.h
r1322 r1333 1 /* $Id: win32wbase.h,v 1.2 5 1999-10-16 14:51:43 sandervlExp $ */1 /* $Id: win32wbase.h,v 1.26 1999-10-17 12:17:45 cbratschi Exp $ */ 2 2 /* 3 3 * Win32 Window Base Class for OS/2 … … 58 58 59 59 Win32BaseWindow(DWORD objType); 60 Win32BaseWindow(HWND os2Handle,VOID* win32WndProc); 60 61 Win32BaseWindow(CREATESTRUCTA *lpCreateStructA, ATOM classAtom, BOOL isUnicode); 61 62 virtual ~Win32BaseWindow(); … … 163 164 BOOL IsWindow() { return TRUE; }; 164 165 BOOL IsDialog() { return fIsDialog; }; 165 166 BOOL CanReceiveSizeMsgs() { return !fNoSizeMsg; }; 167 BOOL IsWindowDestroyed() { return fIsDestroyed; }; 166 BOOL CanReceiveSizeMsgs() { return !fNoSizeMsg; }; 167 BOOL IsWindowDestroyed() { return fIsDestroyed; }; 168 168 BOOL IsWindowEnabled(); 169 169 BOOL IsWindowVisible(); … … 185 185 HWND getVertScrollHandle() { return hwndVertScroll; }; 186 186 HWND getHorzScrollHandle() { return hwndHorzScroll; }; 187 VOID subclassScrollBars(BOOL subHorz,BOOL subVert); 187 188 188 189 LRESULT SendMessageA(ULONG msg, WPARAM wParam, LPARAM lParam); … … 212 213 ULONG getBorderWidth() { return borderWidth; }; 213 214 ULONG getBorderHeight() { return borderHeight; }; 215 216 PVOID getOldWndProc() { return pOldWndProc; } 217 VOID setOldWndProc(PVOID aOldWndProc) { pOldWndProc = aOldWndProc; } 218 BOOL isSubclassedOS2Wnd() { return fIsSubclassedOS2Wnd; }; 214 219 215 220 protected: … … 249 254 BOOL fInternalMsg; //Used to distinguish between messages 250 255 //sent by PM and those sent by apps 251 252 256 BOOL fNoSizeMsg; 257 BOOL fIsDestroyed; 253 258 254 259 PVOID pOldFrameProc; 255 260 ULONG borderWidth; 256 261 ULONG borderHeight; 262 263 PVOID pOldWndProc; 264 BOOL fIsSubclassedOS2Wnd; //subclassed OS/2 window: Netscape plug-in/scrollbar 257 265 258 266 Win32BaseWindow *owner; … … 286 294 #ifndef OS2_INCLUDED 287 295 void GetMinMaxInfo(POINT *maxSize, POINT *maxPos, POINT *minTrack, POINT *maxTrack ); 288 296 LONG HandleSysCommand(WPARAM wParam, POINT *pt32); 289 297 290 298 LONG SendNCCalcSize(BOOL calcValidRect, … … 293 301 RECT *newClientRect ); 294 302 295 303 LONG NCHandleCalcSize(WPARAM wParam, NCCALCSIZE_PARAMS *ncsize); 296 304 297 305 LRESULT SendInternalMessage(ULONG msg, WPARAM wParam, LPARAM lParam) … … 309 317 fakeOpen32WinBaseClass fakeWinBase; 310 318 311 BOOL isOwnDC() { return (windowClass ->getStyle() & CS_OWNDC_W); }319 BOOL isOwnDC() { return (windowClass && windowClass->getStyle() & CS_OWNDC_W); } 312 320 HDC getOwnDC() { return ownDC; } 313 321 void setOwnDC(HDC hdc) { ownDC = hdc; } -
trunk/src/user32/windowword.cpp
r949 r1333 1 /* $Id: windowword.cpp,v 1. 1 1999-09-15 23:19:03 sandervlExp $ */1 /* $Id: windowword.cpp,v 1.2 1999-10-17 12:17:46 cbratschi Exp $ */ 2 2 3 3 /* … … 17 17 //****************************************************************************** 18 18 //****************************************************************************** 19 LONG WIN32API SetWindowLongA(HWND hwnd, int nIndex, LONG arg3)19 LONG WIN32API SetWindowLongA(HWND hwnd, int nIndex, LONG lNewLong) 20 20 { 21 21 Win32BaseWindow *window; … … 24 24 if(window) 25 25 { 26 return window->SetWindowLongA(nIndex, arg3); 27 } 28 else 26 return window->SetWindowLongA(nIndex,lNewLong); 27 } else 29 28 { 30 dprintf(("SetWindowLongA; window %x not found!", hwnd)); 29 if (nIndex == GWL_WNDPROC && !Win32BaseWindow::GetWindowFromOS2Handle(hwnd)) 30 { 31 dprintf(("Start subclassing OS/2 window")); 32 33 window = new Win32BaseWindow(hwnd,(PVOID)lNewLong); 34 35 if(window == NULL) 36 { 37 dprintf(("Win32BaseWindow creation failed!!")); 38 return 0; 39 } 40 41 if(GetLastError() != 0) 42 { 43 dprintf(("Win32BaseWindow error found!!")); 44 delete window; 45 return 0; 46 } 47 48 return (LONG)window->getOldWndProc(); 49 } else dprintf(("SetWindowLongA; window %x not found!", hwnd)); 31 50 } 32 51 return 0; … … 34 53 //****************************************************************************** 35 54 //****************************************************************************** 36 LONG WIN32API SetWindowLongW(HWND hwnd, int nIndex, LONG arg3)55 LONG WIN32API SetWindowLongW(HWND hwnd, int nIndex, LONG lNewLong) 37 56 { 38 57 Win32BaseWindow *window; … … 41 60 if(window) 42 61 { 43 return window->SetWindowLongA(nIndex, arg3); 44 } 45 else 62 return window->SetWindowLongA(nIndex,lNewLong); 63 } else 46 64 { 47 dprintf(("SetWindowLongW; window %x not found!", hwnd)); 65 if (nIndex == GWL_WNDPROC && !Win32BaseWindow::GetWindowFromOS2Handle(hwnd)) 66 { 67 dprintf(("Start subclassing OS/2 window")); 68 69 window = new Win32BaseWindow(hwnd,(PVOID)lNewLong); 70 71 if(window == NULL) 72 { 73 dprintf(("Win32BaseWindow creation failed!!")); 74 return 0; 75 } 76 77 if(GetLastError() != 0) 78 { 79 dprintf(("Win32BaseWindow error found!!")); 80 delete window; 81 return 0; 82 } 83 84 return (LONG)window->getOldWndProc(); 85 } else dprintf(("SetWindowLongW; window %x not found!", hwnd)); 48 86 } 49 87 return 0;
Note:
See TracChangeset
for help on using the changeset viewer.