Consultor Eletrônico



Kbase 19504: WIN32 API - How to Remove ScrollBars from a Window or Frame
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   07/02/2000
The following code came from a customer and has not been verified by Progress Software. This code will remove scrollbars from a window or frame.


PROCEDURE GetWindowLongA EXTERNAL "USER32.DLL":
DEFINE INPUT PARAMETER hwnd AS LONG.
DEFINE INPUT PARAMETER nindex AS LONG.
DEFINE RETURN PARAMETER result AS LONG.
END PROCEDURE.

PROCEDURE SetWindowLongA EXTERNAL "USER32.DLL":
DEFINE INPUT PARAM hwnd AS LONG.
DEFINE INPUT PARAM nindex AS LONG.
DEFINE INPUT PARAM newlong AS LONG.
END PROCEDURE.

FUNCTION FlBitTest
RETURNS LOGICAL (IiNumber AS INTEGER , IiBitNo AS INTEGER):

/* Tests bit number given and returns TRUE if its set, FALSE */
/* if not set. */
/* Note: Bits are number from RHS of byte starting at 0 for */
/* right-most bit. */

/* Divide by 2^Bitno to move the bit we're interested in to */
/* bit 0. */

DEFINE VARIABLE ViMoved AS INTEGER NO-UNDO.

ViMoved = TRUNC(IiNumber / EXP(2,IiBitNo), 0).

/* Now check if odd or even */
RETURN (ViMoved MODULO 2) = 1.
END FUNCTION.

PROCEDURE PRemoveHScroll:
/* Removes Horizontal Scrollbar from a Window/Frame */
/* This can be used when VWidth = Width but there is still a */
/* horizontal scrollbar because VHeight <> Height. */

/* NOTE: The code below looks strange but its the only way I */
/* could get the API call to work. */

DEFINE INPUT PARAMETER IhFrame AS HANDLE NO-UNDO.

DEFINE VARIABLE IiHwnd AS INTEGER NO-UNDO.
DEFINE VARIABLE ViWL AS INTEGER NO-UNDO.

IiHwnd = IhFrame:HWND.

&SCOPED-DEFINE ws_hscroll 1048576
&SCOPED-DEFINE ws_hscroll_bitno 20

RUN GetWindowLongA (IhFrame:HWND,-16,OUTPUT ViWL).

IF NOT FlBitTest(ViWL,{&ws_hscroll_bitno}) THEN
RETURN.

ViWL = ViWL - {&ws_hscroll}.

RUN SetWindowLongA (IhFrame:HWND,-16,ViWL).

IhFrame:HEIGHT-PIXELS = IhFrame:HEIGHT-PIXELS - 1.

RUN GetWindowLongA (IhFrame:HWND,-16,OUTPUT ViWL).

ViWL = ViWL - {&ws_hscroll}.

RUN SetWindowLongA (IhFrame:HWND,-16,ViWL).

IhFrame:HEIGHT-PIXELS = IhFrame:HEIGHT-PIXELS + 1.

END PROCEDURE.