/*
 * resource file for DISPLAY driver dll
 *
 * Copyright 1999 Andreas Mohr
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 */

1 OEMBIN
{
	0x11,			/* vertical thumb height (in pixels)  */
	0x11,			/* horizontal thumb width (in pixels) */
	0x02,			/* icon width (in pixels)             */
	0x02,			/* icon height (in pixels)            */
	0x01,			/* cursor width (in pixels)           */
	0x01,			/* cursor height (in pixels)          */
	0x00,			/* reserved                           */
	0x01,			/* vertical-line width                */
	0x01,			/* horizontal-line width              */

	/* default system color values */
	0x00d4d0c8L,	/* scrollbar */
	0x00d4d0c8L,	/* desktop */
	0x00800000L,	/* active caption */
	0x00ffffffL,	/* inactive caption */
	0x00ffffffL,	/* menu */
	0x00ffffffL,	/* window */
	0x00000000L,	/* window frame */
	0x00000000L,	/* menu text */
	0x00000000L,	/* window text */
	0x00ffffffL,	/* caption text */
	0x00d4d0c8L,	/* active border */
	0x00d4d0c8L,	/* inactive border */
	0x00ffffffL,	/* app workspace */
	0x00800000L,	/* hilite bk */
	0x00ffffffL,	/* hilite text */
	0x00d4d0c8L,	/* btn face */
	0x00808080L,	/* btn shadow */
	0x00c0c0c0L,	/* gray text */
	0x00000000L,	/* btn text */
	0x00000000L		/* inactive caption text */
}

/* @makedep: oic_hand.ico */
1 ICON oic_hand.ico
