Ignore:
Timestamp:
Sep 26, 1999, 12:10:02 PM (26 years ago)
Author:
sandervl
Message:

Scrollbar changes

File:
1 edited

Legend:

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

    r949 r1057  
    1 /* $Id: scroll.cpp,v 1.1 1999-09-15 23:18:55 sandervl Exp $ */
     1/* $Id: scroll.cpp,v 1.2 1999-09-26 10:10:00 sandervl Exp $ */
    22/*
    33 * Scrollbar control
     
    1717
    1818#include <stdlib.h>
    19 #include "winuser.h"
    20 #include "winbase.h"
     19#include <os2win.h>
    2120#include "controls.h"
    2221#include "scroll.h"
     22#include "win32wbase.h"
     23#include "oslibwin.h"
    2324
    2425static HBITMAP hUpArrow = 0;
     
    9899                                   const SCROLLINFO *info, INT *action );
    99100static void SCROLL_DrawInterior_9x( HWND hwnd, HDC hdc, INT nBar,
    100                                     RECT *rect, INT arrowSize,
    101                                     INT thumbSize, INT thumbPos,
    102                                     UINT flags, BOOL vertical,
    103                                     BOOL top_selected, BOOL bottom_selected );
     101                    RECT *rect, INT arrowSize,
     102                    INT thumbSize, INT thumbPos,
     103                    UINT flags, BOOL vertical,
     104                    BOOL top_selected, BOOL bottom_selected );
    104105
    105106/***********************************************************************
     
    402403
    403404  DrawFrameControl( hdc, &r, DFC_SCROLL,
    404                     (vertical ? DFCS_SCROLLUP : DFCS_SCROLLLEFT)
    405                     | (top_pressed ? (DFCS_PUSHED | DFCS_FLAT) : 0 )
    406                     | (infoPtr->flags&ESB_DISABLE_LTUP ? DFCS_INACTIVE : 0 ) );
     405            (vertical ? DFCS_SCROLLUP : DFCS_SCROLLLEFT)
     406            | (top_pressed ? (DFCS_PUSHED | DFCS_FLAT) : 0 )
     407            | (infoPtr->flags&ESB_DISABLE_LTUP ? DFCS_INACTIVE : 0 ) );
    407408
    408409  r = *rect;
     
    413414
    414415  DrawFrameControl( hdc, &r, DFC_SCROLL,
    415                     (vertical ? DFCS_SCROLLDOWN : DFCS_SCROLLRIGHT)
    416                     | (bottom_pressed ? (DFCS_PUSHED | DFCS_FLAT) : 0 )
    417                     | (infoPtr->flags&ESB_DISABLE_RTDN ? DFCS_INACTIVE : 0) );
    418 }
    419 
     416            (vertical ? DFCS_SCROLLDOWN : DFCS_SCROLLRIGHT)
     417            | (bottom_pressed ? (DFCS_PUSHED | DFCS_FLAT) : 0 )
     418            | (infoPtr->flags&ESB_DISABLE_RTDN ? DFCS_INACTIVE : 0) );
     419}
     420//******************************************************************************
     421//******************************************************************************
    420422static void SCROLL_DrawArrows( HDC hdc, SCROLLBAR_INFO *infoPtr,
    421                                RECT *rect, INT arrowSize, BOOL vertical,
    422                                BOOL top_pressed, BOOL bottom_pressed )
     423                   RECT *rect, INT arrowSize, BOOL vertical,
     424                   BOOL top_pressed, BOOL bottom_pressed )
    423425{
    424426  SCROLL_DrawArrows_9x( hdc, infoPtr, rect, arrowSize,
     
    433435 */
    434436static void SCROLL_DrawMovingThumb_9x( HDC hdc, RECT *rect, BOOL vertical,
    435                                        INT arrowSize, INT thumbSize )
     437                       INT arrowSize, INT thumbSize )
    436438{
    437439  INT pos = SCROLL_TrackingPos;
     
    451453
    452454  SCROLL_DrawInterior_9x( SCROLL_TrackingWin, hdc, SCROLL_TrackingBar,
    453                           rect, arrowSize, thumbSize, pos,
    454                           0, vertical, FALSE, FALSE );
    455                        
     455              rect, arrowSize, thumbSize, pos,
     456              0, vertical, FALSE, FALSE );
     457
    456458  SCROLL_MovingThumb = !SCROLL_MovingThumb;
    457459}
    458 
     460//******************************************************************************
     461//******************************************************************************
    459462static void SCROLL_DrawMovingThumb( HDC hdc, RECT *rect, BOOL vertical,
    460                                     INT arrowSize, INT thumbSize )
     463                    INT arrowSize, INT thumbSize )
    461464{
    462465  SCROLL_DrawMovingThumb_9x( hdc, rect, vertical, arrowSize, thumbSize );
    463466}
    464 
    465467/***********************************************************************
    466468 *           SCROLL_DrawInterior
     
    469471 */
    470472static void SCROLL_DrawInterior_9x( HWND hwnd, HDC hdc, INT nBar,
    471                                     RECT *rect, INT arrowSize,
    472                                     INT thumbSize, INT thumbPos,
    473                                     UINT flags, BOOL vertical,
    474                                     BOOL top_selected, BOOL bottom_selected )
     473                    RECT *rect, INT arrowSize,
     474                    INT thumbSize, INT thumbPos,
     475                    UINT flags, BOOL vertical,
     476                    BOOL top_selected, BOOL bottom_selected )
    475477{
    476478    RECT r;
     
    485487    {
    486488      hBrush = (HBRUSH)SendMessageA( GetParent(hwnd), WM_CTLCOLORSCROLLBAR,
    487                                      (WPARAM)hdc,(LPARAM)hwnd);
     489                     (WPARAM)hdc,(LPARAM)hwnd);
    488490    }
    489491    else
     
    556558    SelectObject( hdc, hSaveBrush );
    557559}
    558 
    559 
     560//******************************************************************************
     561//******************************************************************************
    560562static void SCROLL_DrawInterior( HWND hwnd, HDC hdc, INT nBar,
    561563                                 RECT *rect, INT arrowSize,
     
    607609      /* Draw the scroll bar frame */
    608610
    609         /* Only draw outline if Win 3.1.  Mar 24, 1999 - Ronald B. Cemer */
     611    /* Only draw outline if Win 3.1.  Mar 24, 1999 - Ronald B. Cemer */
    610612
    611613      /* Draw the scroll rectangles and thumb */
     
    673675    SelectObject( hdc, hSaveBrush );
    674676}
    675 
    676677/***********************************************************************
    677678 *           SCROLL_DrawScrollBar
     
    724725
    725726}
    726 
    727 
    728727/***********************************************************************
    729728 *           SCROLL_RefreshScrollBar
     
    742741    ReleaseDC( hwnd, hdc );
    743742}
    744 
    745 
    746743/***********************************************************************
    747744 *           SCROLL_HandleKbdEvent
     
    769766                    msg, hwnd );
    770767}
    771 
    772 
    773768/***********************************************************************
    774769 *           SCROLL_HandleScrollEvent
     
    985980    ReleaseDC( hwnd, hdc );
    986981}
    987 
    988 
    989982/***********************************************************************
    990983 *           ScrollBarWndProc
     
    11241117 *  the text), and info->nPage=25.
    11251118 */
    1126 /* CB:
    1127 
    11281119INT WINAPI SetScrollInfo(
    1129 HWND hwnd / * [I] Handle of window whose scrollbar will be affected * /,
    1130 INT nBar / * [I] One of SB_HORZ, SB_VERT, or SB_CTL * /,
    1131 const SCROLLINFO *info / * [I] Specifies what to change and new values * /,
    1132 BOOL bRedraw / * [I] Should scrollbar be redrawn afterwards ? * /)
     1120                HWND hwnd /* [I] Handle of window whose scrollbar will be affected */,
     1121                INT nBar /* [I] One of SB_HORZ, SB_VERT, or SB_CTL */,
     1122                const SCROLLINFO *info /* [I] Specifies what to change and new values */,
     1123                BOOL bRedraw /* [I] Should scrollbar be redrawn afterwards ? */)
    11331124{
    11341125    INT action;
     
    11411132        if( action & SA_SSI_SHOW )
    11421133            if( SCROLL_ShowScrollBar( hwnd, nBar, TRUE, TRUE ) )
    1143                 return retVal; / * SetWindowPos() already did the painting * /
     1134                return retVal; /* SetWindowPos() already did the painting */
    11441135
    11451136        if( bRedraw && (action & SA_SSI_REFRESH))
     
    11491140    }
    11501141    return retVal;
    1151 } */
    1152 
     1142}
     1143//******************************************************************************
     1144//******************************************************************************
    11531145INT SCROLL_SetScrollInfo( HWND hwnd, INT nBar,
    11541146                            const SCROLLINFO *info, INT *action  )
     
    12761268    return infoPtr->CurVal;
    12771269}
    1278 
    1279 
    12801270/*************************************************************************
    12811271 *           GetScrollInfo32   (USER32.284)
     
    12851275 * RETURNS STD
    12861276 */
    1287 /* CB:
    12881277BOOL WINAPI GetScrollInfo(
    1289   HWND hwnd / * [I] Handle of window * / ,
    1290   INT nBar / * [I] One of SB_HORZ, SB_VERT, or SB_CTL * /,
    1291   LPSCROLLINFO info / * [IO] (info.fMask [I] specifies which values are to retrieve) * /)
     1278                HWND hwnd /* [I] Handle of window */ ,
     1279                INT nBar /* [I] One of SB_HORZ, SB_VERT, or SB_CTL */,
     1280                LPSCROLLINFO info /* [IO] (info.fMask [I] specifies which values are to retrieve) */)
    12921281{
    12931282    SCROLLBAR_INFO *infoPtr;
     
    13081297    }
    13091298    return (info->fMask & SIF_ALL) != 0;
    1310 } */
    1311 
    1312 
     1299}
    13131300/*************************************************************************
    13141301 *           SetScrollPos32   (USER32.502)
     
    13221309 *    to make sure there was an error (and to know which one).
    13231310 */
    1324 /* CB:
    13251311INT WINAPI SetScrollPos(
    1326 HWND hwnd / * [I] Handle of window whose scrollbar will be affected * /,
    1327 INT nBar / * [I] One of SB_HORZ, SB_VERT, or SB_CTL * /,
    1328 INT nPos / * [I] New value * /,
    1329 BOOL bRedraw / * [I] Should scrollbar be redrawn afterwards ? * / )
     1312                HWND hwnd /* [I] Handle of window whose scrollbar will be affected */,
     1313                INT nBar /* [I] One of SB_HORZ, SB_VERT, or SB_CTL */,
     1314                INT nPos /* [I] New value */,
     1315                BOOL bRedraw /* [I] Should scrollbar be redrawn afterwards ? */ )
    13301316{
    13311317    SCROLLINFO info;
     
    13401326    SetScrollInfo( hwnd, nBar, &info, bRedraw );
    13411327    return oldPos;
    1342 } */
    1343 
    1344 
     1328}
    13451329/*************************************************************************
    13461330 *           GetScrollPos32   (USER32.285)
     
    13541338 *    to make sure there was an error (and to know which one).
    13551339 */
    1356 /* CB:
    13571340INT WINAPI GetScrollPos(
    1358 HWND hwnd, / * [I] Handle of window * /
    1359 INT nBar / * [I] One of SB_HORZ, SB_VERT, or SB_CTL * /)
     1341                HWND hwnd, /* [I] Handle of window */
     1342                INT nBar /* [I] One of SB_HORZ, SB_VERT, or SB_CTL */)
    13601343{
    13611344    SCROLLBAR_INFO *infoPtr;
     
    13631346    if (!(infoPtr = SCROLL_GetScrollInfo( hwnd, nBar ))) return 0;
    13641347    return infoPtr->CurVal;
    1365 } */
    1366 
    1367 
     1348}
    13681349/*************************************************************************
    13691350 *           SetScrollRange32   (USER32.503)
     
    13711352 * RETURNS STD
    13721353 */
    1373 /* CB:
    13741354BOOL WINAPI SetScrollRange(
    1375 HWND hwnd, / * [I] Handle of window whose scrollbar will be affected * /
    1376 INT nBar, / * [I] One of SB_HORZ, SB_VERT, or SB_CTL * /
    1377 INT MinVal, / * [I] New minimum value * /
    1378 INT MaxVal, / * [I] New maximum value * /
    1379 BOOL bRedraw / * [I] Should scrollbar be redrawn afterwards ? * /)
     1355                HWND hwnd,   /* [I] Handle of window whose scrollbar will be affected */
     1356                INT nBar,    /* [I] One of SB_HORZ, SB_VERT, or SB_CTL */
     1357                INT MinVal,  /* [I] New minimum value */
     1358                INT MaxVal,  /* [I] New maximum value */
     1359                BOOL bRedraw /* [I] Should scrollbar be redrawn afterwards ? */)
    13801360{
    13811361    SCROLLINFO info;
     
    13871367    SetScrollInfo( hwnd, nBar, &info, bRedraw );
    13881368    return TRUE;
    1389 } */
    1390 
    1391 
     1369}
    13921370/*************************************************************************
    13931371 *           SCROLL_SetNCSbState
     
    14291407 * RETURNS STD
    14301408 */
    1431 /* CB:
    14321409BOOL WINAPI GetScrollRange(
    1433 HWND hwnd, / * [I] Handle of window * /
    1434 INT nBar, / * [I] One of SB_HORZ, SB_VERT, or SB_CTL  * /
    1435 LPINT lpMin, / * [O] Where to store minimum value * /
    1436 LPINT lpMax / * [O] Where to store maximum value * /)
     1410                HWND hwnd,   /* [I] Handle of window */
     1411                INT nBar,    /* [I] One of SB_HORZ, SB_VERT, or SB_CTL  */
     1412                LPINT lpMin, /* [O] Where to store minimum value */
     1413                LPINT lpMax  /* [O] Where to store maximum value */)
    14371414{
    14381415    SCROLLBAR_INFO *infoPtr;
     
    14471424    if (lpMax) *lpMax = infoPtr->MaxVal;
    14481425    return TRUE;
    1449 }*/
    1450 
    1451 
     1426}
    14521427/*************************************************************************
    14531428 *           SCROLL_ShowScrollBar()
     
    14561431 * NOTE: fShowV/fShowH must be zero when nBar is SB_HORZ/SB_VERT.
    14571432 */
    1458 BOOL SCROLL_ShowScrollBar( HWND hwnd, INT nBar,
    1459                              BOOL fShowH, BOOL fShowV )
     1433BOOL SCROLL_ShowScrollBar(HWND hwnd, INT nBar,
     1434                          BOOL fShowH, BOOL fShowV )
    14601435{
    14611436    BOOL retvalue = FALSE;
     
    15311506 * RETURNS STD
    15321507 */
    1533 /* CB:
    15341508BOOL WINAPI ShowScrollBar(
    1535 HWND hwnd, / * [I] Handle of window whose scrollbar(s) will be affected   * /
    1536 INT nBar, / * [I] One of SB_HORZ, SB_VERT, SB_BOTH or SB_CTL * /
    1537 BOOL fShow / * [I] TRUE = show, FALSE = hide  * /)
    1538 {
     1509                    HWND hwnd,  /* [I] Handle of window whose scrollbar(s) will be affected   */
     1510                    INT nBar,   /* [I] One of SB_HORZ, SB_VERT, SB_BOTH or SB_CTL */
     1511                    BOOL fShow  /* [I] TRUE = show, FALSE = hide  */)
     1512{
     1513  Win32BaseWindow *window;
     1514
     1515    dprintf(("ShowScrollBar %04x %d %d\n", hwnd, nBar, fShow));
     1516
     1517    window = Win32BaseWindow::GetWindowFromHandle(hwnd);
     1518    if(!window) {
     1519        dprintf(("ShowScrollBar window not found!"));
     1520        SetLastError(ERROR_INVALID_HANDLE);
     1521        return 0;
     1522    }
     1523    if(nBar != SB_CTL || (window->getStyle() & (WM_HSCROLL|WM_VSCROLL) != 0))
     1524    {
     1525     BOOL rc;
     1526
     1527        if(nBar == SB_HORZ || nBar == SB_BOTH)
     1528            rc = OSLibWinShowScrollBar(window->getOS2FrameWindowHandle(), OSLIB_HSCROLL, fShow);
     1529
     1530        if(nBar == SB_VERT || ( rc == TRUE && nBar == SB_BOTH))
     1531            rc = OSLibWinShowScrollBar(window->getOS2FrameWindowHandle(), OSLIB_VSCROLL, fShow);
     1532
     1533        return rc;
     1534    }
     1535
    15391536    SCROLL_ShowScrollBar( hwnd, nBar, (nBar == SB_VERT) ? 0 : fShow,
    15401537                                      (nBar == SB_HORZ) ? 0 : fShow );
    15411538    return TRUE;
    1542 }*/
    1543 
    1544 
     1539}
    15451540/*************************************************************************
    15461541 *           EnableScrollBar32   (USER32.171)
    15471542 */
    1548 /* CB_
    1549 BOOL WINAPI EnableScrollBar( HWND hwnd, INT nBar, UINT flags )
    1550 {
    1551     BOOL bFineWithMe;
    1552     SCROLLBAR_INFO *infoPtr;
    1553 
    1554     //TRACE("%04x %d %d\n", hwnd, nBar, flags );
    1555 
     1543BOOL WINAPI EnableScrollBar( HWND hwnd, INT nBar, UINT flags)
     1544{
     1545  Win32BaseWindow *window;
     1546  BOOL bFineWithMe;
     1547  SCROLLBAR_INFO *infoPtr;
     1548
     1549    dprintf(("EnableScrollBar %04x %d %d\n", hwnd, nBar, flags));
     1550
     1551    window = Win32BaseWindow::GetWindowFromHandle(hwnd);
     1552    if(!window) {
     1553        dprintf(("EnableScrollBar window not found!"));
     1554        SetLastError(ERROR_INVALID_HANDLE);
     1555        return 0;
     1556    }
     1557    if(nBar != SB_CTL || (window->getStyle() & (WM_HSCROLL|WM_VSCROLL) != 0))
     1558    {
     1559     BOOL fEnable, rc;
     1560
     1561        //hwnd = parent window with default scrollbar(s)
     1562        switch(flags) {
     1563        case ESB_ENABLE_BOTH:
     1564            fEnable = TRUE;
     1565            break;
     1566        case ESB_DISABLE_BOTH:
     1567        case ESB_DISABLE_RTDN:
     1568        case ESB_DISABLE_LTUP:
     1569            fEnable = FALSE;
     1570            break;
     1571        default:
     1572            SetLastError(ERROR_INVALID_PARAMETER);
     1573            return 0;
     1574        }
     1575        if(nBar == SB_HORZ || nBar == SB_BOTH)
     1576            rc = OSLibWinEnableScrollBar(window->getOS2FrameWindowHandle(), OSLIB_HSCROLL, fEnable);
     1577
     1578        if(nBar == SB_VERT || ( rc == TRUE && nBar == SB_BOTH))
     1579            rc = OSLibWinEnableScrollBar(window->getOS2FrameWindowHandle(), OSLIB_VSCROLL, fEnable);
     1580
     1581        return rc;
     1582    }
    15561583    flags &= ESB_DISABLE_BOTH;
    15571584
     
    15751602    SCROLL_RefreshScrollBar( hwnd, nBar, TRUE, TRUE );
    15761603    return TRUE;
    1577 }*/
    1578 
     1604}
     1605//******************************************************************************
     1606//******************************************************************************
    15791607BOOL SCROLLBAR_Register()
    15801608{
     
    15941622    return RegisterClassA(&wndClass);
    15951623}
    1596 
    1597 
     1624//******************************************************************************
     1625//******************************************************************************
    15981626BOOL SCROLLBAR_Unregister()
    15991627{
     
    16021630    else return FALSE;
    16031631}
     1632//******************************************************************************
     1633//******************************************************************************
     1634
Note: See TracChangeset for help on using the changeset viewer.