You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
101 lines
2.6 KiB
101 lines
2.6 KiB
/**************************** Module Header ********************************\
|
|
* Module Name:
|
|
*
|
|
* Copyright (c) 1985 - 1999, Microsoft Corporation
|
|
*
|
|
* Scroll bar public APIs
|
|
*
|
|
* History:
|
|
* 11/21/90 JimA Created.
|
|
* 01-31-91 IanJa Revalidaion added
|
|
\***************************************************************************/
|
|
|
|
#include "precomp.h"
|
|
#pragma hdrstop
|
|
|
|
/***************************************************************************\
|
|
* xxxShowScrollBar
|
|
*
|
|
* Shows and hides standard scroll bars or scroll bar controls. If wBar is
|
|
* SB_HORZ, SB_VERT, or SB_BOTH, pwnd is assumed to be the handle of the window
|
|
* which has the standard scroll bars as styles. If wBar is SB_CTL, pwnd is
|
|
* assumed to be the handle of the scroll bar control.
|
|
*
|
|
* It does not destroy pwnd->rgwScroll like xxxSetScrollBar() does, so that the
|
|
* app can hide a standard scroll bar and then show it, without having to reset
|
|
* the range and thumbposition.
|
|
*
|
|
* History:
|
|
* 16-May-1991 mikeke Changed to return BOOL
|
|
\***************************************************************************/
|
|
|
|
BOOL xxxShowScrollBar(
|
|
PWND pwnd,
|
|
UINT wBar, /* SB_HORZ, SB_VERT, SB_BOTH , SB_CTL */
|
|
BOOL fShow) /* Show or Hide. */
|
|
{
|
|
BOOL fChanged = FALSE;
|
|
DWORD dwStyle;
|
|
|
|
CheckLock(pwnd);
|
|
|
|
switch (wBar)
|
|
{
|
|
case SB_CTL:
|
|
{
|
|
|
|
xxxShowWindow(
|
|
pwnd,
|
|
(fShow ? SHOW_OPENWINDOW : HIDE_WINDOW) | TEST_PUDF(PUDF_ANIMATE));
|
|
|
|
return(TRUE);
|
|
}
|
|
|
|
case SB_HORZ:
|
|
dwStyle = WS_HSCROLL;
|
|
break;
|
|
|
|
case SB_VERT:
|
|
dwStyle = WS_VSCROLL;
|
|
break;
|
|
|
|
case SB_BOTH:
|
|
dwStyle = WS_HSCROLL | WS_VSCROLL;
|
|
break;
|
|
}
|
|
|
|
if (!fShow)
|
|
{
|
|
if (pwnd->style & dwStyle)
|
|
{
|
|
fChanged = TRUE;
|
|
pwnd->style &= ~dwStyle;
|
|
}
|
|
} else {
|
|
if ((pwnd->style & dwStyle) != dwStyle)
|
|
{
|
|
fChanged = TRUE;
|
|
pwnd->style |= dwStyle;
|
|
}
|
|
|
|
/*
|
|
* Make sure that pwsb is initialized.
|
|
*/
|
|
if (pwnd->pSBInfo == NULL)
|
|
_InitPwSB(pwnd);
|
|
}
|
|
|
|
/*
|
|
* If the state changed, redraw the frame and force WM_NCPAINT.
|
|
*/
|
|
if (fChanged) {
|
|
|
|
/*
|
|
* We always redraw even if minimized or hidden... Otherwise, it seems
|
|
* the scroll bars aren't properly hidden/shown when we become
|
|
* visible
|
|
*/
|
|
xxxRedrawFrame(pwnd);
|
|
}
|
|
return TRUE;
|
|
}
|