Changeset 2381
- Timestamp:
- Jan 9, 2000, 3:14:25 PM (25 years ago)
- Location:
- trunk/src/user32/new
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified trunk/src/user32/new/makefile ¶
r2290 r2381 1 # $Id: makefile,v 1.5 3 2000-01-01 14:59:41cbratschi Exp $1 # $Id: makefile,v 1.54 2000-01-09 14:14:22 cbratschi Exp $ 2 2 3 3 # … … 69 69 $(PDWIN32_LIB)/libuls.lib 70 70 $(PDWIN32_LIB)/odincrt.lib 71 $(PDWIN32_LIB)/shell32.lib 71 72 OS2386.LIB 72 73 $(RTLLIB_O) -
TabularUnified trunk/src/user32/new/oslibmsg.cpp ¶
r2379 r2381 1 /* $Id: oslibmsg.cpp,v 1.1 0 2000-01-08 17:08:55 sandervlExp $ */1 /* $Id: oslibmsg.cpp,v 1.11 2000-01-09 14:14:22 cbratschi Exp $ */ 2 2 /* 3 3 * Window message translation functions for OS/2 … … 241 241 } while (eaten); 242 242 } 243 243 244 OS2ToWinMsgTranslate((PVOID)thdb, &os2msg, pMsg, isUnicode, MSG_REMOVE); 244 245 memcpy(MsgThreadPtr, &os2msg, sizeof(QMSG)); … … 278 279 return TRUE; 279 280 } 281 280 282 continuepeekmsg: 281 283 do { -
TabularUnified trunk/src/user32/new/oslibmsgtranslate.cpp ¶
r2379 r2381 1 /* $Id: oslibmsgtranslate.cpp,v 1. 8 2000-01-08 17:08:56 sandervlExp $ */1 /* $Id: oslibmsgtranslate.cpp,v 1.9 2000-01-09 14:14:23 cbratschi Exp $ */ 2 2 /* 3 3 * Window message translation functions for OS/2 … … 144 144 } 145 145 winMsg->time = os2Msg->time; 146 winMsg->pt.x = os2Msg->ptl.x; 146 //CB: PM bug or undocumented feature? ptl.x highword is set! 147 winMsg->pt.x = os2Msg->ptl.x & 0xFFFF; 147 148 winMsg->pt.y = mapScreenY(os2Msg->ptl.y); 148 149 -
TabularUnified trunk/src/user32/new/pmframe.cpp ¶
r2377 r2381 1 /* $Id: pmframe.cpp,v 1. 8 2000-01-08 16:47:47cbratschi Exp $ */1 /* $Id: pmframe.cpp,v 1.9 2000-01-09 14:14:23 cbratschi Exp $ */ 2 2 /* 3 3 * Win32 Frame Managment Code for OS/2 … … 31 31 //****************************************************************************** 32 32 //****************************************************************************** 33 VOID Draw3DRect(HPS hps,RECTL rect,LONG colorBR,LONG colorTL)34 {35 POINTL point;36 37 GpiSetColor(hps,colorBR);38 point.x = rect.xLeft;39 point.y = rect.yBottom;40 GpiMove(hps,&point);41 point.x = rect.xRight-1;42 GpiLine(hps,&point);43 point.y = rect.yTop-1;44 GpiLine(hps,&point);45 GpiSetColor(hps,colorTL);46 point.x--;47 GpiMove(hps,&point);48 point.x = rect.xLeft;49 GpiLine(hps,&point);50 point.y = rect.yBottom+1;51 GpiLine(hps,&point);52 }53 //******************************************************************************54 //******************************************************************************55 inline VOID DeflateRect(RECTL *rect)56 {57 rect->xLeft++;58 rect->xRight--;59 rect->yTop--;60 rect->yBottom++;61 }62 //******************************************************************************63 //******************************************************************************64 VOID DrawFrame(HPS hps,RECTL *rect,Win32BaseWindow *win32wnd)65 {66 LONG clrWhite,clrBlack,clrDark,clrLight;67 POINTL point;68 DWORD dwExStyle = win32wnd->getExStyle();69 DWORD dwStyle = win32wnd->getStyle();70 71 //CB: todo: switch to RGB mode and use win colors72 clrWhite = CLR_WHITE;73 clrBlack = CLR_BLACK;74 clrLight = CLR_PALEGRAY;75 clrDark = CLR_DARKGRAY;76 77 if (dwExStyle & WS_EX_CLIENTEDGE_W)78 {79 Draw3DRect(hps,*rect,clrWhite,clrDark);80 DeflateRect(rect);81 Draw3DRect(hps,*rect,clrLight,clrBlack);82 }83 else if (dwExStyle & WS_EX_DLGMODALFRAME_W)84 {85 Draw3DRect(hps,*rect,clrBlack,clrLight);86 DeflateRect(rect);87 Draw3DRect(hps,*rect,clrDark,clrWhite);88 DeflateRect(rect);89 Draw3DRect(hps,*rect,clrLight,clrLight);90 }91 else if (dwExStyle & WS_EX_STATICEDGE_W)92 {93 Draw3DRect(hps,*rect,clrWhite,clrDark);94 }95 else if (dwExStyle & WS_EX_WINDOWEDGE_W);96 else if (dwStyle & WS_BORDER_W)97 {98 Draw3DRect(hps,*rect,clrBlack,clrBlack);99 }100 101 DeflateRect(rect);102 }103 //******************************************************************************104 //******************************************************************************105 BOOL CanDrawSizeBox(Win32BaseWindow *win32wnd)106 {107 return ((win32wnd->getStyle() & WS_SIZEBOX_W) && (WinQueryWindowULong(win32wnd->getOS2FrameWindowHandle(),QWL_STYLE) & FS_SIZEBORDER)108 && win32wnd->getVertScrollHandle() && WinQueryWindow(win32wnd->getVertScrollHandle(),QW_PARENT) == win32wnd->getOS2FrameWindowHandle()109 && win32wnd->getHorzScrollHandle() && WinQueryWindow(win32wnd->getHorzScrollHandle(),QW_PARENT) == win32wnd->getOS2FrameWindowHandle());110 }111 //******************************************************************************112 //******************************************************************************113 VOID GetSizeBox(Win32BaseWindow *win32wnd,RECTL *rect)114 {115 SWP swpHorz,swpVert;116 117 WinQueryWindowPos(win32wnd->getVertScrollHandle(),&swpVert);118 WinQueryWindowPos(win32wnd->getHorzScrollHandle(),&swpHorz);119 rect->xLeft = swpVert.x;120 rect->xRight = swpVert.x+swpVert.cx;121 rect->yTop = swpHorz.y+swpHorz.cy;122 rect->yBottom = swpHorz.y;123 }124 //******************************************************************************125 //******************************************************************************126 BOOL InSizeBox(Win32BaseWindow *win32wnd,POINTS *points)127 {128 if (CanDrawSizeBox(win32wnd))129 {130 RECTL rect;131 POINTL point;132 133 point.x = points->x;134 point.y = points->y;135 GetSizeBox(win32wnd,&rect);136 return (WinPtInRect(GetThreadHAB(),&rect,&point));137 }138 139 return FALSE;140 }141 //******************************************************************************142 //******************************************************************************143 VOID DrawSizeBox(HPS hps,RECTL rect)144 {145 POINTL p1,p2;146 LONG clrDark = CLR_DARKGRAY,clrWhite = CLR_WHITE;147 INT x;148 149 //CB: todo: switch to RGB mode and use win colors150 WinFillRect(hps,&rect,SYSCLR_DIALOGBACKGROUND);151 p1.x = rect.xRight-2;152 p1.y = rect.yBottom;153 p2.x = rect.xRight-1;154 p2.y = rect.yBottom+1;155 for (x = 0;x < 3;x++)156 {157 GpiSetColor(hps,clrDark);158 GpiMove(hps,&p1);159 GpiLine(hps,&p2);160 p1.x--;161 p2.y++;162 GpiMove(hps,&p1);163 GpiLine(hps,&p2);164 GpiSetColor(hps,clrWhite);165 p1.x--;166 p2.y++;167 GpiMove(hps,&p1);168 GpiLine(hps,&p2);169 p1.x -= 2;170 p2.y += 2;171 }172 }173 //******************************************************************************174 //******************************************************************************175 void DrawActivate(Win32BaseWindow *win32wnd, HWND hwnd)176 {177 if (!win32wnd->isChild())178 {179 if (CanDrawSizeBox(win32wnd))180 {181 HPS hps;182 RECTL rect;183 184 GetSizeBox(win32wnd,&rect);185 hps = WinGetClipPS(hwnd,0,PSF_CLIPCHILDREN | PSF_CLIPSIBLINGS);186 DrawSizeBox(hps,rect);187 WinReleasePS(hps);188 189 }190 }191 else192 {193 HPS hps;194 RECTL rect;195 196 WinQueryWindowRect(hwnd,&rect);197 rect.xRight = rect.xRight-rect.xLeft;198 rect.yTop = rect.yTop-rect.yBottom;199 rect.xLeft = rect.yBottom = 0;200 hps = WinGetClipPS(hwnd,0,PSF_CLIPCHILDREN | PSF_CLIPSIBLINGS);201 DrawFrame(hps,&rect,win32wnd);202 WinReleasePS(hps);203 }204 }205 //******************************************************************************206 //******************************************************************************207 33 VOID FrameTrackFrame(Win32BaseWindow *win32wnd,DWORD flags) 208 34 { … … 594 420 } 595 421 596 VOID FrameGetBorderSize(Win32BaseWindow *win32wnd,PWPOINT pSize)597 {598 WinSendMsg(win32wnd->getOS2FrameWindowHandle(),WM_QUERYBORDERSIZE,(MPARAM)pSize,(MPARAM)0);599 }600 601 VOID FrameSetBorderSize(Win32BaseWindow *win32wnd,BOOL resize)602 {603 POINTL point;604 605 if (!resize)606 {607 WinSendMsg(win32wnd->getOS2FrameWindowHandle(),WM_SETBORDERSIZE,(MPARAM)win32wnd->getBorderWidth(),(MPARAM)win32wnd->getBorderHeight());608 609 return;610 }611 612 FrameGetBorderSize(win32wnd,&point);613 WinSendMsg(win32wnd->getOS2FrameWindowHandle(),WM_SETBORDERSIZE,(MPARAM)win32wnd->getBorderWidth(),(MPARAM)win32wnd->getBorderHeight());614 if ((point.x != win32wnd->getBorderWidth()) || (point.y != win32wnd->getBorderHeight()))615 {616 INT xDiff = win32wnd->getBorderWidth()-point.x;617 INT yDiff = win32wnd->getBorderHeight()-point.y;618 SWP swp;619 620 WinQueryWindowPos(win32wnd->getOS2FrameWindowHandle(),&swp);621 swp.x += xDiff;622 swp.y += yDiff;623 swp.cx -= 2*xDiff;624 swp.cy -= 2*yDiff;625 WinSetWindowPos(win32wnd->getOS2FrameWindowHandle(),0,swp.x,swp.y,swp.cx,swp.cy,SWP_MOVE | SWP_SIZE);626 }627 }628 629 UINT FrameGetDefSizeBorderSize(VOID)630 {631 return WinQuerySysValue(HWND_DESKTOP,SV_CXSIZEBORDER);632 }633 634 BOOL FrameCreateScrollBars(Win32BaseWindow *win32wnd,BOOL createHorz,BOOL createVert,BOOL updateFrame,DWORD *flags)635 {636 HWND hwndHScroll = 0,hwndVScroll = 0;637 ULONG updateFlags = 0;638 639 if (createHorz)640 {641 hwndHScroll = WinCreateWindow(win32wnd->getOS2FrameWindowHandle(),WC_SCROLLBAR,"",WS_VISIBLE | WS_PARENTCLIP | WS_SYNCPAINT | SBS_HORZ,0,0,0,0,win32wnd->getOS2FrameWindowHandle(),HWND_TOP,FID_HORZSCROLL,NULL,NULL);642 if (hwndHScroll) win32wnd->setHorzScrollHandle(hwndHScroll);643 else return FALSE;644 updateFlags = FCF_HORZSCROLL;645 }646 647 if (createVert)648 {649 hwndVScroll = WinCreateWindow(win32wnd->getOS2FrameWindowHandle(),WC_SCROLLBAR,"",WS_VISIBLE | WS_PARENTCLIP | WS_SYNCPAINT | SBS_VERT,0,0,0,0,win32wnd->getOS2FrameWindowHandle(),HWND_TOP,FID_VERTSCROLL,NULL,NULL);650 if (hwndVScroll) win32wnd->setVertScrollHandle(hwndVScroll); else651 {652 if (hwndHScroll) WinDestroyWindow(hwndHScroll);653 654 return FALSE;655 }656 updateFlags |= FCF_VERTSCROLL;657 }658 659 win32wnd->subclassScrollBars(hwndHScroll,hwndVScroll);660 661 if (updateFrame && updateFlags) WinSendMsg(win32wnd->getOS2FrameWindowHandle(),WM_UPDATEFRAME,(MPARAM)0,(MPARAM)0);662 if (flags) *flags = updateFlags;663 664 return TRUE;665 }666 667 VOID FrameGetScrollBarHandles(Win32BaseWindow *win32wnd,BOOL getHorz,BOOL getVert)668 {669 if (getHorz) win32wnd->setHorzScrollHandle(WinWindowFromID(win32wnd->getOS2FrameWindowHandle(),FID_HORZSCROLL));670 if (getVert) win32wnd->setVertScrollHandle(WinWindowFromID(win32wnd->getOS2FrameWindowHandle(),FID_VERTSCROLL));671 }672 673 BOOL FrameShowScrollBars(Win32BaseWindow *win32wnd,BOOL changeHorz,BOOL changeVert,BOOL fShow,BOOL updateFrame,DWORD *flags)674 {675 HWND hwndObj = WinQueryObjectWindow(HWND_DESKTOP);676 ULONG updateFlags = 0;677 678 if (changeHorz)679 {680 HWND hwndCurPar = WinQueryWindow(win32wnd->getHorzScrollHandle(),QW_PARENT);681 682 if ((fShow && (hwndCurPar == hwndObj)) || (!fShow && (hwndCurPar != hwndObj)))683 {684 WinSetParent(win32wnd->getHorzScrollHandle(),fShow ? win32wnd->getOS2FrameWindowHandle():HWND_OBJECT,FALSE);685 updateFlags |= FCF_HORZSCROLL;686 }687 }688 689 if (changeVert)690 {691 HWND hwndCurPar = WinQueryWindow(win32wnd->getVertScrollHandle(),QW_PARENT);692 693 if ((fShow && (hwndCurPar == hwndObj)) || (!fShow && (hwndCurPar != hwndObj)))694 {695 WinSetParent(win32wnd->getVertScrollHandle(),fShow ? win32wnd->getOS2FrameWindowHandle():HWND_OBJECT,FALSE);696 updateFlags |= FCF_VERTSCROLL;697 }698 }699 700 if (updateFrame && updateFlags) WinSendMsg(win32wnd->getOS2FrameWindowHandle(),WM_UPDATEFRAME,(MPARAM)updateFlags,(MPARAM)0);701 if (flags) *flags = updateFlags;702 703 return TRUE;704 }705 706 422 VOID FrameUpdateFrame(Win32BaseWindow *win32wnd,DWORD flags) 707 423 { 708 424 WinSendMsg(win32wnd->getOS2FrameWindowHandle(),WM_UPDATEFRAME,(MPARAM)flags,(MPARAM)0); 709 425 } 710 711 DWORD FrameHitTest(Win32BaseWindow *win32wnd,INT x,INT y)712 {713 POINTL point;714 HWND hwnd = win32wnd->getOS2FrameWindowHandle(),child;715 716 if (hwnd == win32wnd->getOS2WindowHandle()) return HTCLIENT_W;717 if (win32wnd->getOS2WindowHandle() == WinQueryCapture(HWND_DESKTOP)) return HTCLIENT_W;718 point.x = x;719 point.y = mapScreenY(y);720 WinMapWindowPoints(HWND_DESKTOP,hwnd,&point,1);721 child = WinWindowFromPoint(hwnd,&point,FALSE);722 723 if (child == 0) return HTERROR_W;724 if (child == win32wnd->getOS2FrameWindowHandle())725 {726 RECTL client,frame;727 728 if (CanDrawSizeBox(win32wnd))729 {730 RECTL rect;731 732 GetSizeBox(win32wnd,&rect);733 if (WinPtInRect(GetThreadHAB(),&rect,&point)) return HTGROWBOX_W;734 }735 //somewhere in the border736 INT w = WinQuerySysValue(HWND_DESKTOP,SV_CXMINMAXBUTTON);737 INT h = WinQuerySysValue(HWND_DESKTOP,SV_CXMINMAXBUTTON);738 WinQueryWindowRect(hwnd,&frame);739 740 if (point.y < h)741 {742 if (point.x < w) return HTBOTTOMLEFT_W;743 if (point.x > frame.xRight-1-w) return HTBOTTOMRIGHT_W;744 return HTBOTTOM_W;745 }746 if (point.y > frame.yTop-1-h)747 {748 if (point.x < w) return HTTOPLEFT_W;749 if (point.x > frame.xRight-1-w) return HTTOPRIGHT_W;750 return HTTOP_W;751 }752 return HTBORDER_W;753 } else754 {755 if (child == WinWindowFromID(hwnd,FID_CLIENT)) return HTCLIENT_W;756 if (child == WinWindowFromID(hwnd,FID_VERTSCROLL)) return HTVSCROLL_W;757 if (child == WinWindowFromID(hwnd,FID_HORZSCROLL)) return HTHSCROLL_W;758 if (child == WinWindowFromID(hwnd,FID_SYSMENU)) return HTSYSMENU_W;759 if (child == WinWindowFromID(hwnd,FID_TITLEBAR)) return HTCAPTION_W;760 if (child == WinWindowFromID(hwnd,FID_MENU)) return HTMENU_W;761 if (child == WinWindowFromID(hwnd,FID_MINMAX))762 {763 //CB: close, reduce or zoom764 return HTZOOM_W;765 }766 767 return HTERROR_W;768 }769 } -
TabularUnified trunk/src/user32/new/pmframe.h ¶
r2377 r2381 1 /* $Id: pmframe.h,v 1. 2 2000-01-08 16:47:48cbratschi Exp $ */1 /* $Id: pmframe.h,v 1.3 2000-01-09 14:14:23 cbratschi Exp $ */ 2 2 /* 3 3 * Win32 Frame Managment Code for OS/2 … … 10 10 11 11 PVOID FrameSubclassFrameWindow(Win32BaseWindow *win32wnd); 12 VOID FrameSetBorderSize(Win32BaseWindow *win32wnd,BOOL resize);13 UINT FrameGetDefSizeBorderSize(VOID);14 VOID FrameTrackFrame(Win32BaseWindow *win32wnd,BOOL lefttop);15 BOOL FrameCreateScrollBars(Win32BaseWindow *win32wnd,BOOL createHorz,BOOL createVert,BOOL updateFrame,DWORD *flags = NULL);16 VOID FrameGetScrollBarHandles(Win32BaseWindow *win32wnd,BOOL getHorz,BOOL getVert);17 BOOL FrameShowScrollBars(Win32BaseWindow *win32wnd,BOOL changeHorz,BOOL changeVert,BOOL fShow,BOOL updateFrame,DWORD *flags = NULL);18 12 VOID FrameUpdateFrame(Win32BaseWindow *win32wnd,DWORD flags); 19 13 … … 48 42 #define HTSIZELAST_W HTBOTTOMRIGHT_W 49 43 50 DWORD FrameHitTest(Win32BaseWindow *win32wnd,INT x,INT y);51 52 44 #define TFOS_LEFT 0x0001 53 45 #define TFOS_TOP 0x0002 -
TabularUnified trunk/src/user32/new/scroll.cpp ¶
r2290 r2381 1 /* $Id: scroll.cpp,v 1. 7 2000-01-01 14:57:22cbratschi Exp $ */1 /* $Id: scroll.cpp,v 1.8 2000-01-09 14:14:23 cbratschi Exp $ */ 2 2 /* 3 3 * Scrollbar control … … 73 73 static BOOL SCROLL_MovingThumb = FALSE; 74 74 75 // Get the scrollbar handle: works only with frame/control handles76 77 static HWND SCROLL_GetScrollHandle(HWND hwnd,INT nBar)78 {79 switch(nBar)80 {81 case SB_HORZ:82 case SB_VERT:83 {84 Win32BaseWindow *win32wnd = Win32BaseWindow::GetWindowFromHandle(hwnd);85 86 if (!win32wnd) return 0;87 //CB: I removed WS_* check due to problems, but it should work88 if (nBar == SB_HORZ)89 return /*(win32wnd->getStyle() & WS_HSCROLL) ?*/ Win32BaseWindow::OS2ToWin32Handle(win32wnd->getHorzScrollHandle())/*:0*/;90 else91 return /*(win32wnd->getStyle() & WS_VSCROLL) ?*/ Win32BaseWindow::OS2ToWin32Handle(win32wnd->getVertScrollHandle())/*:0*/;92 }93 94 case SB_CTL:95 return hwnd;96 97 default:98 return 0;99 }100 }101 102 static HWND SCROLL_GetFrameHandle(HWND hwnd)103 {104 Win32BaseWindow *win32wnd = Win32BaseWindow::GetWindowFromHandle(hwnd);105 106 if (!win32wnd) return 0;107 return Win32BaseWindow::GetWindowFromOS2FrameHandle(OSLibWinQueryWindow(win32wnd->getOS2WindowHandle(),QWOS_OWNER))->getWindowHandle();108 }109 110 75 // Get the infoPtr: works only with scrollbar handles 111 76 … … 120 85 case SB_VERT: 121 86 win32wnd = Win32BaseWindow::GetWindowFromHandle(hwnd); 122 if (!win32wnd) return NULL;123 hwndFrame = OSLibWinQueryWindow(win32wnd->getOS2WindowHandle(),QWOS_OWNER);124 win32wnd = Win32BaseWindow::GetWindowFromOS2FrameHandle(hwndFrame);125 87 if (!win32wnd) return NULL; 126 88 return win32wnd->getScrollInfo(nBar); … … 157 119 { 158 120 case SB_HORZ: 121 { 122 Win32BaseWindow *win32wnd = Win32BaseWindow::GetWindowFromHandle(hwnd); 123 RECT rectClient; 124 125 if (!win32wnd) return FALSE; 126 rectClient = *win32wnd->getClientRectPtr(); 127 mapWin32Rect(win32wnd->getParent() ? win32wnd->getParent()->getOS2WindowHandle():OSLIB_HWND_DESKTOP,win32wnd->getOS2FrameWindowHandle(),&rectClient); 128 lprect->left = rectClient.left; 129 lprect->top = rectClient.bottom; 130 lprect->right = rectClient.right; 131 lprect->bottom = lprect->top+GetSystemMetrics(SM_CYHSCROLL); 132 if (win32wnd->getStyle() & WS_BORDER) 133 { 134 lprect->left--; 135 lprect->right++; 136 } else if (win32wnd->getStyle() & WS_VSCROLL) 137 lprect->right++; 138 vertical = FALSE; 139 break; 140 } 141 159 142 case SB_VERT: 143 { 144 Win32BaseWindow *win32wnd = Win32BaseWindow::GetWindowFromHandle(hwnd); 145 RECT rectClient; 146 147 if (!win32wnd) return FALSE; 148 rectClient = *win32wnd->getClientRectPtr(); 149 mapWin32Rect(win32wnd->getParent() ? win32wnd->getParent()->getOS2WindowHandle():OSLIB_HWND_DESKTOP,win32wnd->getOS2FrameWindowHandle(),&rectClient); 150 lprect->left = rectClient.right; 151 lprect->top = rectClient.top; 152 lprect->right = lprect->left+GetSystemMetrics(SM_CXVSCROLL); 153 lprect->bottom = rectClient.bottom; 154 if(win32wnd->getStyle() & WS_BORDER) 155 { 156 lprect->top--; 157 lprect->bottom++; 158 } else if (win32wnd->getStyle() & WS_HSCROLL) 159 lprect->bottom++; 160 vertical = TRUE; 161 break; 162 } 163 164 case SB_CTL: 165 { 166 DWORD dwStyle = GetWindowLongA(hwnd,GWL_STYLE); 167 160 168 GetClientRect( hwnd, lprect ); 161 vertical = ( nBar == SB_VERT);169 vertical = ((dwStyle & SBS_VERT) != 0); 162 170 break; 163 164 case SB_CTL: 165 { 166 DWORD dwStyle = GetWindowLongA(hwnd,GWL_STYLE); 167 168 GetClientRect( hwnd, lprect ); 169 vertical = ((dwStyle & SBS_VERT) != 0); 170 break; 171 } 171 } 172 172 173 173 default: … … 566 566 * Redraw the whole scrollbar. 567 567 */ 568 void SCROLL_DrawScrollBar( HWND hwnd, HDC hdc, INT nBar, 569 BOOL arrows, BOOL interior ) 568 void SCROLL_DrawScrollBar(HWND hwnd,HDC hdc,INT nBar,BOOL arrows,BOOL interior) 570 569 { 571 570 INT arrowSize, thumbSize, thumbPos; … … 584 583 HBRUSH hBrush; 585 584 586 hdc = GetDC (hwnd);585 hdc = GetDCEx(hwnd,0,DCX_CACHE | ((nBar == SB_CTL) ? 0 : DCX_WINDOW)); 587 586 hBrush = GetSysColorBrush(COLOR_3DFACE); 588 587 GetClientRect(hwnd,&rect); … … 635 634 BOOL arrows, BOOL interior ) 636 635 { 637 Win32BaseWindow *window; 638 HDC hdc; 639 640 641 hdc = GetDC(hwnd); 642 643 if (!hdc) return; 644 645 SCROLL_DrawScrollBar( hwnd, hdc, nBar, arrows, interior ); 646 ReleaseDC( hwnd, hdc ); 636 HDC hdc = GetDCEx(hwnd,0,DCX_CACHE | ((nBar == SB_CTL) ? 0:DCX_WINDOW)); 637 638 if (!hdc) return; 639 640 SCROLL_DrawScrollBar( hwnd, hdc, nBar, arrows, interior ); 641 ReleaseDC( hwnd, hdc ); 647 642 } 648 643 … … 763 758 764 759 vertical = SCROLL_GetScrollBarRect(hwnd,nBar,&rect,&arrowSize,&thumbSize,&thumbPos); 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 res; 772 hwndFrame = OSLibWinQueryWindow(win32wnd->getOS2WindowHandle(),QWOS_OWNER); 773 win32wnd = Win32BaseWindow::GetWindowFromOS2FrameHandle(hwndFrame); 774 if (!win32wnd) return res; 775 hwndOwner = win32wnd->getWindowHandle(); 776 } 760 hwndOwner = (nBar == SB_CTL) ? GetParent(hwnd):hwnd; 777 761 778 762 hwndCtl = (nBar == SB_CTL) ? hwnd:0; … … 795 779 if ((SCROLL_FocusWin == hwnd) && SCROLL_Highlighted) 796 780 { 797 hdc = GetDC (hwnd);781 hdc = GetDCEx(hwnd,0,DCX_CACHE | ((nBar == SB_CTL) ? 0:DCX_WINDOW)); 798 782 SCROLL_DrawScrollBar(hwnd,hdc,nBar,FALSE,TRUE); 799 783 ReleaseDC(hwnd,hdc); … … 854 838 { 855 839 SCROLL_Highlighted = FALSE; 856 hdc = GetDC (hwnd);840 hdc = GetDCEx(hwnd,0,DCX_CACHE | ((nBar == SB_CTL) ? 0:DCX_WINDOW)); 857 841 SCROLL_DrawScrollBar(hwnd,hdc,nBar,FALSE,TRUE); 858 842 ReleaseDC(hwnd,hdc); … … 873 857 if (!SCROLL_Scrolling) 874 858 { 875 hdc = GetDC (hwnd);859 hdc = GetDCEx(hwnd,0,DCX_CACHE | ((nBar == SB_CTL) ? 0 : DCX_WINDOW)); 876 860 SCROLL_DrawScrollBar(hwnd,hdc,nBar,FALSE,TRUE); 877 861 ReleaseDC(hwnd,hdc); … … 884 868 } 885 869 886 hdc = GetDC (hwnd);870 hdc = GetDCEx(hwnd,0,DCX_CACHE | ((nBar == SB_CTL) ? 0 : DCX_WINDOW)); 887 871 888 872 switch(SCROLL_trackHitTest) … … 1103 1087 INT oldPos = infoPtr->CurVal; 1104 1088 1105 SetScrollRange( (nBar == SB_CTL) ? hwnd:SCROLL_GetFrameHandle(hwnd),nBar,wParam,lParam,redraw);1089 SetScrollRange(hwnd,nBar,wParam,lParam,redraw); 1106 1090 return (oldPos != infoPtr->CurVal) ? infoPtr->CurVal:0; 1107 1091 } … … 1189 1173 } 1190 1174 1191 /* frame handlers */1192 1193 VOID SCROLL_SubclassScrollBars(HWND hwndHorz,HWND hwndVert)1194 {1195 if (hwndHorz) SetWindowLongA(hwndHorz,GWL_WNDPROC,(ULONG)HorzScrollBarWndProc);1196 if (hwndVert) SetWindowLongA(hwndVert,GWL_WNDPROC,(ULONG)VertScrollBarWndProc);1197 }1198 1199 LRESULT WINAPI HorzScrollBarWndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam )1200 {1201 switch (message)1202 {1203 case WM_LBUTTONDOWN:1204 case WM_LBUTTONUP:1205 case WM_NCHITTEST:1206 case WM_CAPTURECHANGED:1207 case WM_MOUSEMOVE:1208 case WM_SYSTIMER:1209 case WM_SETFOCUS:1210 case WM_KILLFOCUS:1211 return SCROLL_HandleScrollEvent(hwnd,wParam,lParam,SB_HORZ,message);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 return SCROLL_Paint(hwnd,wParam,lParam,SB_HORZ);1221 1222 case SBM_SETPOS:1223 return SetScrollPos(SCROLL_GetFrameHandle(hwnd),SB_HORZ,wParam,(BOOL)lParam);1224 1225 case SBM_GETPOS:1226 return GetScrollPos(SCROLL_GetFrameHandle(hwnd),SB_HORZ);1227 1228 case SBM_SETRANGE:1229 return SCROLL_SetRange(hwnd,wParam,lParam,SB_HORZ,FALSE);1230 1231 case SBM_GETRANGE:1232 GetScrollRange(SCROLL_GetFrameHandle(hwnd),SB_HORZ,(LPINT)wParam,(LPINT)lParam);1233 return 0;1234 1235 case SBM_ENABLE_ARROWS:1236 return EnableScrollBar(SCROLL_GetFrameHandle(hwnd),SB_HORZ,wParam);1237 1238 case SBM_SETRANGEREDRAW:1239 return SCROLL_SetRange(hwnd,wParam,lParam,SB_HORZ,TRUE);1240 1241 case SBM_SETSCROLLINFO:1242 return SetScrollInfo(SCROLL_GetFrameHandle(hwnd),SB_HORZ,(SCROLLINFO*)lParam,wParam);1243 1244 case SBM_GETSCROLLINFO:1245 return GetScrollInfo(SCROLL_GetFrameHandle(hwnd),SB_HORZ,(SCROLLINFO*)lParam);1246 1247 default:1248 return DefWindowProcA(hwnd,message,wParam,lParam);1249 }1250 1251 return 0;1252 }1253 1254 LRESULT WINAPI VertScrollBarWndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam )1255 {1256 switch (message)1257 {1258 case WM_LBUTTONDOWN:1259 case WM_LBUTTONUP:1260 case WM_NCHITTEST:1261 case WM_CAPTURECHANGED:1262 case WM_MOUSEMOVE:1263 case WM_SYSTIMER:1264 case WM_SETFOCUS:1265 case WM_KILLFOCUS:1266 return SCROLL_HandleScrollEvent(hwnd,wParam,lParam,SB_VERT,message);1267 1268 case WM_ERASEBKGND:1269 return 1;1270 1271 case WM_GETDLGCODE:1272 return DLGC_WANTARROWS; /* Windows returns this value */1273 1274 case WM_PAINT:1275 return SCROLL_Paint(hwnd,wParam,lParam,SB_VERT);1276 1277 case SBM_SETPOS:1278 return SetScrollPos(SCROLL_GetFrameHandle(hwnd),SB_VERT,wParam,(BOOL)lParam);1279 1280 case SBM_GETPOS:1281 return GetScrollPos(SCROLL_GetFrameHandle(hwnd),SB_VERT);1282 1283 case SBM_SETRANGE:1284 return SCROLL_SetRange(hwnd,wParam,lParam,SB_VERT,FALSE);1285 1286 case SBM_GETRANGE:1287 GetScrollRange(SCROLL_GetFrameHandle(hwnd),SB_VERT,(LPINT)wParam,(LPINT)lParam);1288 return 0;1289 1290 case SBM_ENABLE_ARROWS:1291 return EnableScrollBar(SCROLL_GetFrameHandle(hwnd),SB_VERT,wParam);1292 1293 case SBM_SETRANGEREDRAW:1294 return SCROLL_SetRange(hwnd,wParam,lParam,SB_VERT,TRUE);1295 1296 case SBM_SETSCROLLINFO:1297 return SetScrollInfo(SCROLL_GetFrameHandle(hwnd),SB_VERT,(SCROLLINFO*)lParam,wParam);1298 1299 case SBM_GETSCROLLINFO:1300 return GetScrollInfo(SCROLL_GetFrameHandle(hwnd),SB_VERT,(SCROLLINFO*)lParam);1301 1302 default:1303 return DefWindowProcA(hwnd,message,wParam,lParam);1304 }1305 1306 return 0;1307 }1308 1309 1175 /* Scrollbar API */ 1310 1176 … … 1331 1197 UINT new_flags; 1332 1198 INT action = 0; 1333 HWND hwndScroll = SCROLL_GetScrollHandle(hwnd,nBar);1334 1199 1335 1200 dprintf(("USER32: SetScrollInfo")); 1336 1201 1337 if (!hwndScroll) return 0; 1338 if (!(infoPtr = SCROLL_GetInfoPtr(hwndScroll,nBar))) return 0; 1202 if (!(infoPtr = SCROLL_GetInfoPtr(hwnd,nBar))) return 0; 1339 1203 if (info->fMask & ~(SIF_ALL | SIF_DISABLENOSCROLL)) return 0; 1340 1204 if ((info->cbSize != sizeof(*info)) && … … 1445 1309 { 1446 1310 if (action & SA_SSI_REFRESH) 1447 SCROLL_RefreshScrollBar(hwnd Scroll,nBar,TRUE,TRUE);1311 SCROLL_RefreshScrollBar(hwnd,nBar,TRUE,TRUE); 1448 1312 else 1449 1313 { 1450 1314 if (action & (SA_SSI_REPAINT_INTERIOR | SA_SSI_MOVE_THUMB)) 1451 SCROLL_RefreshScrollBar(hwnd Scroll,nBar,FALSE,TRUE);1315 SCROLL_RefreshScrollBar(hwnd,nBar,FALSE,TRUE); 1452 1316 if (action & SA_SSI_REPAINT_ARROWS) 1453 SCROLL_RefreshScrollBar(hwnd Scroll,nBar,TRUE,FALSE);1317 SCROLL_RefreshScrollBar(hwnd,nBar,TRUE,FALSE); 1454 1318 } 1455 1319 } … … 1473 1337 { 1474 1338 SCROLLBAR_INFO *infoPtr; 1475 HWND hwndScroll;1476 1339 1477 1340 dprintf(("USER32: GetScrollInfo")); 1478 1341 1479 hwndScroll = SCROLL_GetScrollHandle(hwnd,nBar); 1480 if (!hwndScroll || !(infoPtr = SCROLL_GetInfoPtr(hwndScroll,nBar))) return FALSE; 1342 if (!(infoPtr = SCROLL_GetInfoPtr(hwnd,nBar))) return FALSE; 1481 1343 if (info->fMask & ~(SIF_ALL | SIF_DISABLENOSCROLL)) return FALSE; 1482 1344 if ((info->cbSize != sizeof(*info)) && … … 1486 1348 if (info->fMask & SIF_POS) info->nPos = infoPtr->CurVal; 1487 1349 if ((info->fMask & SIF_TRACKPOS) && (info->cbSize == sizeof(*info))) 1488 info->nTrackPos = (SCROLL_MovingThumb && SCROLL_TrackingWin == hwnd Scroll&& SCROLL_TrackingBar == nBar) ? SCROLL_TrackingVal:infoPtr->CurVal;1350 info->nTrackPos = (SCROLL_MovingThumb && SCROLL_TrackingWin == hwnd && SCROLL_TrackingBar == nBar) ? SCROLL_TrackingVal:infoPtr->CurVal; 1489 1351 1490 1352 if (info->fMask & SIF_RANGE) … … 1517 1379 1518 1380 dprintf(("SetScrollPos %x %d %d %d", hwnd, nBar, nPos, bRedraw)); 1519 if (!(infoPtr = SCROLL_GetInfoPtr( SCROLL_GetScrollHandle(hwnd,nBar),nBar))) return 0;1381 if (!(infoPtr = SCROLL_GetInfoPtr(hwnd,nBar))) return 0; 1520 1382 oldPos = infoPtr->CurVal; 1521 1383 info.cbSize = sizeof(info); … … 1544 1406 dprintf(("GetScrollPos %x %d", hwnd, nBar)); 1545 1407 1546 infoPtr = SCROLL_GetInfoPtr( SCROLL_GetScrollHandle(hwnd,nBar),nBar);1408 infoPtr = SCROLL_GetInfoPtr(hwnd,nBar); 1547 1409 if (!infoPtr) return 0; 1548 1410 … … 1586 1448 SCROLLBAR_INFO *infoPtr; 1587 1449 1588 infoPtr = SCROLL_GetInfoPtr( SCROLL_GetScrollHandle(hwnd,nBar),nBar);1450 infoPtr = SCROLL_GetInfoPtr(hwnd,nBar); 1589 1451 if (!infoPtr) 1590 1452 { … … 1608 1470 BOOL fShow /* [I] TRUE = show, FALSE = hide */) 1609 1471 { 1472 Win32BaseWindow *win32wnd = Win32BaseWindow::GetWindowFromHandle(hwnd); 1473 BOOL fShowH = (nBar == SB_HORZ) ? 0:fShow,fShowV = (nBar == SB_VERT) ? 0:fShow; 1474 1610 1475 dprintf(("ShowScrollBar %04x %d %d\n", hwnd, nBar, fShow)); 1611 1612 if (nBar == SB_CTL) 1613 { 1614 ShowWindow(hwnd,fShow ? SW_SHOW:SW_HIDE); 1615 1616 return TRUE; 1617 } else 1618 { 1619 Win32BaseWindow *window = Win32BaseWindow::GetWindowFromHandle(hwnd); 1620 BOOL createHorz = FALSE,createVert = FALSE; 1621 1622 if (!window) 1623 { 1624 dprintf(("ShowScrollBar window not found!")); 1625 SetLastError(ERROR_INVALID_WINDOW_HANDLE); 1626 return FALSE; 1627 } 1628 1629 return window->showScrollBars(nBar == SB_HORZ || nBar == SB_BOTH,nBar == SB_VERT || nBar == SB_BOTH,fShow); 1476 if (!win32wnd) return FALSE; 1477 1478 switch(nBar) 1479 { 1480 case SB_CTL: 1481 ShowWindow(hwnd,fShow ? SW_SHOW:SW_HIDE); 1482 return TRUE; 1483 1484 case SB_BOTH: 1485 case SB_HORZ: 1486 if (fShow) 1487 { 1488 fShowH = !(win32wnd->getStyle() & WS_HSCROLL); 1489 win32wnd->setStyle(win32wnd->getStyle() | WS_HSCROLL); 1490 } 1491 else /* hide it */ 1492 { 1493 fShowH = (win32wnd->getStyle() & WS_HSCROLL); 1494 win32wnd->setStyle(win32wnd->getStyle() & ~WS_HSCROLL); 1495 } 1496 if( nBar == SB_HORZ ) 1497 { 1498 fShowV = FALSE; 1499 break; 1500 } 1501 /* fall through */ 1502 1503 case SB_VERT: 1504 if (fShowV) 1505 { 1506 fShowV = !(win32wnd->getStyle() & WS_VSCROLL); 1507 win32wnd->setStyle(win32wnd->getStyle() | WS_VSCROLL); 1508 } 1509 else /* hide it */ 1510 { 1511 fShowV = (win32wnd->getStyle() & WS_VSCROLL); 1512 win32wnd->setStyle(win32wnd->getStyle() & ~WS_VSCROLL); 1513 } 1514 if ( nBar == SB_VERT ) 1515 fShowH = FALSE; 1516 break; 1517 1518 default: 1519 return TRUE; /* Nothing to do! */ 1520 } 1521 1522 if( fShowH || fShowV ) /* frame has been changed, let the window redraw itself */ 1523 { 1524 SetWindowPos( hwnd, 0, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE 1525 | SWP_NOACTIVATE | SWP_NOZORDER | SWP_FRAMECHANGED ); 1630 1526 } 1631 1527 … … 1638 1534 BOOL WINAPI EnableScrollBar( HWND hwnd, INT nBar, UINT flags) 1639 1535 { 1640 Win32BaseWindow *window; 1641 SCROLLBAR_INFO *infoPtr; 1642 1643 dprintf(("EnableScrollBar %04x %d %d\n", hwnd, nBar, flags)); 1644 1645 if (nBar == SB_CTL) 1646 { 1647 if (!(infoPtr = SCROLL_GetInfoPtr(hwnd,nBar))) return FALSE; 1648 1649 if (infoPtr->flags != flags) 1650 { 1651 infoPtr->flags = flags; 1652 SCROLL_RefreshScrollBar(hwnd,nBar,TRUE,TRUE); 1653 } 1654 1536 BOOL bFineWithMe; 1537 SCROLLBAR_INFO *infoPtr; 1538 1539 dprintf(("EnableScrollBar %04x %d %d\n", hwnd, nBar, flags)); 1540 1541 flags &= ESB_DISABLE_BOTH; 1542 1543 if (nBar == SB_BOTH) 1544 { 1545 if (!(infoPtr = SCROLL_GetInfoPtr( hwnd, SB_VERT ))) return FALSE; 1546 if (!(bFineWithMe = (infoPtr->flags == flags)) ) 1547 { 1548 infoPtr->flags = flags; 1549 SCROLL_RefreshScrollBar( hwnd, SB_VERT, TRUE, TRUE ); 1550 } 1551 nBar = SB_HORZ; 1552 } 1553 else 1554 bFineWithMe = TRUE; 1555 1556 if (!(infoPtr = SCROLL_GetInfoPtr( hwnd, nBar ))) return FALSE; 1557 if (bFineWithMe && infoPtr->flags == flags) return FALSE; 1558 infoPtr->flags = flags; 1559 1560 SCROLL_RefreshScrollBar( hwnd, nBar, TRUE, TRUE ); 1655 1561 return TRUE; 1656 } else1657 {1658 Win32BaseWindow *window = Win32BaseWindow::GetWindowFromHandle(hwnd);1659 1660 if(!window)1661 {1662 dprintf(("EnableScrollBar window not found!"));1663 SetLastError(ERROR_INVALID_WINDOW_HANDLE);1664 return FALSE;1665 }1666 1667 if(window->getStyle() & (WS_HSCROLL | WS_VSCROLL))1668 {1669 BOOL rc = FALSE;1670 1671 if (((nBar == SB_VERT) || (nBar == SB_BOTH)) && (window->getStyle() & WS_VSCROLL))1672 {1673 HWND hwndScroll = Win32BaseWindow::OS2ToWin32Handle(window->getVertScrollHandle());1674 1675 infoPtr = SCROLL_GetInfoPtr(hwndScroll,SB_VERT);1676 if (infoPtr)1677 {1678 if (infoPtr->flags != flags)1679 {1680 infoPtr->flags = flags;1681 SCROLL_RefreshScrollBar(hwndScroll,nBar,TRUE,TRUE);1682 }1683 1684 rc = TRUE;1685 }1686 }1687 if (((nBar == SB_HORZ) || (rc && (nBar == SB_BOTH))) && (window->getStyle() & WS_HSCROLL))1688 {1689 HWND hwndScroll = Win32BaseWindow::OS2ToWin32Handle(window->getHorzScrollHandle());1690 1691 infoPtr = SCROLL_GetInfoPtr(hwndScroll,SB_VERT);1692 if (infoPtr)1693 {1694 if (infoPtr->flags != flags)1695 {1696 infoPtr->flags = flags;1697 SCROLL_RefreshScrollBar(hwndScroll,nBar,TRUE,TRUE);1698 }1699 1700 rc = TRUE;1701 }1702 }1703 1704 return rc;1705 }1706 }1707 1708 return TRUE;1709 1562 } 1710 1563 … … 1720 1573 } 1721 1574 1722 HWND hwndScroll;1723 1575 INT nBar,arrowSize; 1724 1576 … … 1727 1579 case OBJID_CLIENT: 1728 1580 nBar = SB_CTL; 1729 hwndScroll = hwnd;1730 1581 break; 1731 1582 1732 1583 case OBJID_HSCROLL: 1733 1584 nBar = SB_HORZ; 1734 hwndScroll = SCROLL_GetScrollHandle(hwnd,SB_HORZ);1735 1585 break; 1736 1586 1737 1587 case OBJID_VSCROLL: 1738 1588 nBar = SB_VERT; 1739 hwndScroll = SCROLL_GetScrollHandle(hwnd,SB_VERT);1740 1589 break; 1741 1590 … … 1744 1593 } 1745 1594 1746 if (!hwndScroll) return FALSE; 1747 1748 SCROLL_GetScrollBarRect(hwndScroll,nBar,&psbi->rcScrollBar,&arrowSize,&psbi->dxyLineButton,&psbi->xyThumbTop); 1595 SCROLL_GetScrollBarRect(hwnd,nBar,&psbi->rcScrollBar,&arrowSize,&psbi->dxyLineButton,&psbi->xyThumbTop); 1749 1596 psbi->xyThumbBottom = psbi->xyThumbTop+psbi->dxyLineButton; 1750 1597 psbi->bogus = 0; //CB: undocumented! 1751 psbi->rgstate[0] = IsWindowVisible(hwnd Scroll) ? STATE_SYSTEM_INVISIBLE:0;1598 psbi->rgstate[0] = IsWindowVisible(hwnd) ? STATE_SYSTEM_INVISIBLE:0; 1752 1599 psbi->rgstate[1] = psbi->rgstate[2] = psbi->rgstate[3] = psbi->rgstate[4] = psbi->rgstate[5] = psbi->rgstate[0]; //CB: todo 1753 1600 -
TabularUnified trunk/src/user32/new/win32wbase.cpp ¶
r2377 r2381 1 /* $Id: win32wbase.cpp,v 1.2 5 2000-01-08 16:47:48cbratschi Exp $ */1 /* $Id: win32wbase.cpp,v 1.26 2000-01-09 14:14:24 cbratschi Exp $ */ 2 2 /* 3 3 * Win32 Window Base Class for OS/2 … … 44 44 #include "winmouse.h" 45 45 #include <win\hook.h> 46 #include <shellapi.h> 46 47 #define INCL_TIMERWIN32 47 48 #include "timer.h" 49 50 #define SC_ABOUTWINE (SC_SCREENSAVE+1) 51 #define SC_PUTMARK (SC_SCREENSAVE+2) 48 52 49 53 #define HAS_DLGFRAME(style,exStyle) \ … … 53 57 #define HAS_THICKFRAME(style,exStyle) \ 54 58 (((style) & WS_THICKFRAME) && \ 55 !((exStyle) & WS_EX_DLGMODALFRAME)) 59 !((exStyle) & WS_EX_DLGMODALFRAME) && \ 60 !((style) & WS_CHILD)) 56 61 57 62 #define HAS_THINFRAME(style) \ … … 183 188 OS2Hwnd = 0; 184 189 OS2HwndFrame = 0; 185 OS2HwndMenu = 0; 190 hMenu = 0; 191 hSysMenu = 0; 186 192 Win32Hwnd = 0; 187 193 … … 223 229 horzScrollInfo = NULL; 224 230 vertScrollInfo = NULL; 225 hwndHorzScroll = 0;226 hwndVertScroll = 0;227 231 228 232 ownDC = 0; … … 644 648 645 649 OSLibWinSetOwner(OS2Hwnd, OS2HwndFrame); 646 647 //FrameGetScrollBarHandles(this,dwStyle & WS_HSCROLL,dwStyle & WS_VSCROLL);648 //subclassScrollBars(dwStyle & WS_HSCROLL,dwStyle & WS_VSCROLL);649 650 650 651 fakeWinBase.hwndThis = OS2Hwnd; … … 1223 1224 //****************************************************************************** 1224 1225 //****************************************************************************** 1225 VOID Win32BaseWindow::subclassScrollBars(BOOL subHorz,BOOL subVert)1226 {1227 SCROLL_SubclassScrollBars(subHorz ? hwndHorzScroll:0,subVert ? hwndVertScroll:0);1228 }1229 //******************************************************************************1230 //******************************************************************************1231 BOOL Win32BaseWindow::showScrollBars(BOOL changeHorz,BOOL changeVert,BOOL fShow)1232 {1233 BOOL rc = TRUE;1234 DWORD flags = 0;1235 1236 if (fShow)1237 {1238 BOOL createHorz = FALSE,createVert = FALSE;1239 BOOL showHorz = FALSE,showVert = FALSE;1240 1241 if (changeHorz)1242 {1243 if (!hwndHorzScroll)1244 createHorz = TRUE;1245 else1246 showHorz = TRUE;1247 }1248 1249 if (changeVert)1250 {1251 if (!hwndVertScroll)1252 createVert = TRUE;1253 else1254 showVert = TRUE;1255 }1256 1257 if (createHorz || createVert)1258 {1259 if (createHorz && !horzScrollInfo)1260 {1261 horzScrollInfo = (SCROLLBAR_INFO*)malloc(sizeof(SCROLLBAR_INFO));1262 horzScrollInfo->MinVal = horzScrollInfo->CurVal = horzScrollInfo->Page = 0;1263 horzScrollInfo->MaxVal = 100;1264 horzScrollInfo->flags = ESB_ENABLE_BOTH;1265 }1266 1267 if (createVert && !vertScrollInfo)1268 {1269 vertScrollInfo = (SCROLLBAR_INFO*)malloc(sizeof(SCROLLBAR_INFO));1270 vertScrollInfo->MinVal = vertScrollInfo->CurVal = vertScrollInfo->Page = 0;1271 vertScrollInfo->MaxVal = 100;1272 vertScrollInfo->flags = ESB_ENABLE_BOTH;1273 }1274 1275 rc = FrameCreateScrollBars(this,createHorz,createVert,FALSE,&flags);1276 1277 if (!rc) return FALSE;1278 if (createHorz) dwStyle |= WS_HSCROLL;1279 if (createVert) dwStyle |= WS_VSCROLL;1280 }1281 1282 if (showVert || showHorz)1283 {1284 DWORD newFlags;1285 1286 rc = FrameShowScrollBars(this,showHorz,showVert,fShow,FALSE,&newFlags);1287 flags |= newFlags;1288 if (rc)1289 {1290 if (showHorz) dwStyle |= WS_HSCROLL;1291 if (showVert) dwStyle |= WS_VSCROLL;1292 }1293 }1294 1295 if (flags) FrameUpdateFrame(this,flags);1296 } else1297 {1298 rc = FrameShowScrollBars(this,changeHorz && hwndHorzScroll,changeVert && hwndVertScroll,fShow,TRUE);1299 1300 if (rc)1301 {1302 if (changeHorz) dwStyle &= ~WS_HSCROLL;1303 if (changeVert) dwStyle &= ~WS_VSCROLL;1304 }1305 }1306 1307 return rc;1308 }1309 //******************************************************************************1310 //******************************************************************************1311 1226 LONG Win32BaseWindow::HandleNCActivate(WPARAM wParam) 1312 1227 { … … 1429 1344 //****************************************************************************** 1430 1345 //****************************************************************************** 1346 VOID Win32BaseWindow::TrackScrollBar(WPARAM wParam,POINT pt) 1347 { 1348 INT scrollbar; 1349 MSG msg; 1350 1351 if ((wParam & 0xfff0) == SC_HSCROLL) 1352 { 1353 if ((wParam & 0x0f) != HTHSCROLL) return; 1354 scrollbar = SB_HORZ; 1355 } else /* SC_VSCROLL */ 1356 { 1357 if ((wParam & 0x0f) != HTVSCROLL) return; 1358 scrollbar = SB_VERT; 1359 } 1360 1361 pt.x -= rectWindow.left; 1362 pt.y -= rectWindow.top; 1363 SCROLL_HandleScrollEvent(Win32Hwnd,0,MAKELONG(pt.x,pt.y),scrollbar,WM_LBUTTONDOWN); 1364 if (GetCapture() != Win32Hwnd) return; 1365 do 1366 { 1367 GetMessageA(&msg,Win32Hwnd,0,0); 1368 switch(msg.message) 1369 { 1370 case WM_LBUTTONUP: 1371 case WM_MOUSEMOVE: 1372 pt.x = msg.pt.x-rectWindow.left; 1373 pt.y = msg.pt.y-rectWindow.top; 1374 msg.lParam = MAKELONG(pt.x,pt.y); 1375 case WM_SYSTIMER: 1376 SCROLL_HandleScrollEvent(Win32Hwnd,msg.wParam,msg.lParam,scrollbar,msg.message); 1377 break; 1378 1379 default: 1380 TranslateMessage(&msg); 1381 DispatchMessageA(&msg); 1382 break; 1383 } 1384 if (!IsWindow()) 1385 { 1386 ReleaseCapture(); 1387 break; 1388 } 1389 } while (msg.message != WM_LBUTTONUP); 1390 } 1391 //****************************************************************************** 1392 //****************************************************************************** 1431 1393 LONG Win32BaseWindow::HandleNCLButtonDown(WPARAM wParam,LPARAM lParam) 1432 1394 { … … 1824 1786 if(hIcon == 0) 1825 1787 if (!(dwStyle & DS_MODALFRAME)) 1826 hIcon = LoadImageA(0, MAKEINTRESOURCEA(OIC_ WINEICON), IMAGE_ICON, 0, 0, LR_DEFAULTCOLOR);1788 hIcon = LoadImageA(0, MAKEINTRESOURCEA(OIC_ODINICON), IMAGE_ICON, 0, 0, LR_DEFAULTCOLOR); 1827 1789 1828 1790 if (hIcon) … … 1986 1948 r.bottom--; 1987 1949 1988 FillRect( hdc, &r, GetSysColorBrush(active ? COLOR_ACTIVECAPTION : COLOR_INACTIVECAPTION) ); 1950 //CB: todo: 1951 //COLOR_GRADIENTACTIVECAPTION 1952 //COLOR_GRADIENTINACTIVECAPTION 1953 1954 FillRect(hdc,&r,GetSysColorBrush(active ? COLOR_ACTIVECAPTION:COLOR_INACTIVECAPTION)); 1989 1955 1990 1956 if (!hbitmapClose) … … 2135 2101 2136 2102 /* Draw the scroll-bars */ 2137 #if 0 //CB: todo2138 2103 if (dwStyle & WS_VSCROLL) 2139 SCROLL_DrawScrollBar( hwnd,hdc,SB_VERT,TRUE,TRUE);2140 if ( wndPtr->dwStyle & WS_HSCROLL)2141 SCROLL_DrawScrollBar( hwnd,hdc,SB_HORZ,TRUE,TRUE);2142 #endif 2104 SCROLL_DrawScrollBar(Win32Hwnd,hdc,SB_VERT,TRUE,TRUE); 2105 if (dwStyle & WS_HSCROLL) 2106 SCROLL_DrawScrollBar(Win32Hwnd,hdc,SB_HORZ,TRUE,TRUE); 2107 2143 2108 /* Draw the "size-box" */ 2144 2109 if ((dwStyle & WS_VSCROLL) && (dwStyle & WS_HSCROLL)) … … 2247 2212 * TODO: Not done (see #if 0) 2248 2213 */ 2249 LONG Win32BaseWindow::HandleSysCommand(WPARAM wParam, 2214 LONG Win32BaseWindow::HandleSysCommand(WPARAM wParam,POINT *pt32) 2250 2215 { 2251 2216 UINT uCommand = wParam & 0xFFF0; 2252 2217 2218 /* //CB: don't need this, perhaps recycle for menus 2253 2219 if ((getStyle() & WS_CHILD) && (uCommand != SC_KEYMENU)) 2254 2220 ScreenToClient(getParent()->getWindowHandle(), pt32 ); 2255 2221 */ 2256 2222 switch (uCommand) 2257 2223 { … … 2316 2282 2317 2283 case SC_CLOSE: 2318 return SendInternalMessageA(WM_CLOSE, 0, 0); 2319 2320 #if 0 2284 return SendInternalMessageA(WM_CLOSE,0,0); 2285 2321 2286 case SC_VSCROLL: 2322 2287 case SC_HSCROLL: 2323 NC_TrackScrollBar( hwnd, wParam, pt32);2288 TrackScrollBar(wParam,*pt32); 2324 2289 break; 2325 2290 #if 0 2326 2291 case SC_MOUSEMENU: 2327 2292 MENU_TrackMouseMenuBar( wndPtr, wParam & 0x000F, pt32 ); … … 2331 2296 MENU_TrackKbdMenuBar( wndPtr , wParam , pt.x ); 2332 2297 break; 2333 2298 #endif 2334 2299 case SC_TASKLIST: 2335 WinExec( "taskman.exe", SW_SHOWNORMAL);2300 WinExec("taskman.exe",SW_SHOWNORMAL); 2336 2301 break; 2337 2302 2338 2303 case SC_SCREENSAVE: 2339 2304 if (wParam == SC_ABOUTWINE) 2340 ShellAboutA( hwnd, "Odin", ODIN_RELEASE_INFO,0);2305 ShellAboutA(Win32Hwnd,"Odin","Odin alpha release compiled with IBM VAC++",0); 2341 2306 else 2342 2307 if (wParam == SC_PUTMARK) 2343 2308 dprintf(("Mark requested by user\n")); 2344 2309 break; 2345 #endif 2310 2346 2311 case SC_HOTKEY: 2347 2312 case SC_ARRANGE: … … 2719 2684 point.x = LOWORD(lParam); 2720 2685 point.y = HIWORD(lParam); 2721 return HandleSysCommand(wParam, 2686 return HandleSysCommand(wParam,&point); 2722 2687 } 2723 2688 … … 3093 3058 window = parentwindow; 3094 3059 } 3095 }3096 //******************************************************************************3097 //******************************************************************************3098 BOOL Win32BaseWindow::SetMenu(HMENU hMenu)3099 {3100 3101 dprintf(("SetMenu %x", hMenu));3102 OS2HwndMenu = OSLibWinSetMenu(OS2HwndFrame, hMenu);3103 if(OS2HwndMenu == 0) {3104 dprintf(("Win32BaseWindow::SetMenu OS2HwndMenu == 0"));3105 return FALSE;3106 }3107 return TRUE;3108 3060 } 3109 3061 //****************************************************************************** -
TabularUnified trunk/src/user32/new/win32wbase.h ¶
r2377 r2381 1 /* $Id: win32wbase.h,v 1. 19 2000-01-08 16:47:50cbratschi Exp $ */1 /* $Id: win32wbase.h,v 1.20 2000-01-09 14:14:25 cbratschi Exp $ */ 2 2 /* 3 3 * Win32 Window Base Class for OS/2 … … 160 160 void setFlags(DWORD newflags) { flags = newflags; }; 161 161 162 HMENU GetMenu() { return (HMENU) OS2HwndMenu; }; 163 BOOL SetMenu(ULONG hMenu); 162 HMENU GetMenu() { return hMenu; }; 163 VOID SetMenu(HMENU newMenu) { hMenu = newMenu; }; 164 HMENU GetSysMenu() { return hSysMenu; }; 165 VOID SetSysMenu(HMENU newSysMenu) { hSysMenu = newSysMenu; }; 164 166 165 167 BOOL SetIcon(HICON hIcon); … … 220 222 221 223 SCROLLBAR_INFO *getScrollInfo(int nBar); 222 HWND getVertScrollHandle() { return hwndVertScroll; };223 VOID setVertScrollHandle(HWND newHandle) { hwndVertScroll = newHandle; }224 HWND getHorzScrollHandle() { return hwndHorzScroll; };225 VOID setHorzScrollHandle(HWND newHandle) { hwndHorzScroll = newHandle; }226 VOID subclassScrollBars(BOOL subHorz,BOOL subVert);227 BOOL showScrollBars(BOOL changeHorz,BOOL changeVert,BOOL fShow);228 224 229 225 LRESULT SendMessageA(ULONG msg, WPARAM wParam, LPARAM lParam); … … 283 279 HWND OS2Hwnd; 284 280 HWND OS2HwndFrame; 285 HWND OS2HwndMenu; 281 HMENU hMenu; 282 HMENU hSysMenu; 286 283 HWND Win32Hwnd; 287 284 BOOL isUnicode; … … 349 346 SCROLLBAR_INFO *vertScrollInfo; 350 347 SCROLLBAR_INFO *horzScrollInfo; 351 HWND hwndHorzScroll; //os/2 handle352 HWND hwndVertScroll; //os/2 handle353 348 354 349 Win32WndClass *windowClass; … … 363 358 VOID TrackMinMaxBox(WORD wParam); 364 359 VOID TrackCloseButton(WORD wParam); 360 VOID TrackScrollBar(WPARAM wParam,POINT pt); 365 361 LONG HandleNCLButtonDown(WPARAM wParam,LPARAM lParam); 366 362 LONG HandleNCLButtonDblClk(WPARAM wParam,LPARAM lParam);
Note:
See TracChangeset
for help on using the changeset viewer.