/*
 * Top level resource file for Common Controls
 *
 * Copyright 1999 Bertho Stultiens
 * Copyright 1999 Eric Kohl
 *
 * 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
 */

#include "windef.h"
#include "winbase.h"
#include "winuser.h"
#include "winnls.h"
#include "comctl32.h"

LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL

#define WINE_FILEDESCRIPTION_STR "Wine Common Controls"
#define WINE_FILENAME_STR "comctl32.dll"
#define WINE_FILEVERSION COMCTL32_VERSION, COMCTL32_VERSION_MINOR, 4704, 1100
#define WINE_FILEVERSIONSTR "5.81"
#define WINE_PRODUCTVERSION WINE_FILEVERSION
#define WINE_PRODUCTVERSION_STR WINE_FILEVERSIONSTR

#include "wine/wine_common_ver.rc"

/* @makedep: idt_check.bmp */
IDT_CHECK BITMAP LOADONCALL DISCARDABLE idt_check.bmp

/* @makedep: idb_std_small.bmp */
IDB_STD_SMALL BITMAP LOADONCALL DISCARDABLE idb_std_small.bmp

/* @makedep: idb_std_large.bmp */
IDB_STD_LARGE BITMAP LOADONCALL DISCARDABLE idb_std_large.bmp

/* @makedep: idb_view_small.bmp */
IDB_VIEW_SMALL BITMAP LOADONCALL DISCARDABLE idb_view_small.bmp

/* @makedep: idb_view_large.bmp */
IDB_VIEW_LARGE BITMAP LOADONCALL MOVEABLE DISCARDABLE idb_view_large.bmp

/* @makedep: idb_hist_small.bmp */
IDB_HIST_SMALL BITMAP LOADONCALL DISCARDABLE idb_hist_small.bmp

/* @makedep: idb_hist_large.bmp */
IDB_HIST_LARGE BITMAP LOADONCALL DISCARDABLE idb_hist_large.bmp

/* @makedep: idc_copy.cur */
IDC_COPY CURSOR LOADONCALL DISCARDABLE idc_copy.cur

/* @makedep: idc_divider.cur */
IDC_DIVIDER CURSOR LOADONCALL DISCARDABLE idc_divider.cur

/* @makedep: idc_divideropen.cur */
IDC_DIVIDEROPEN CURSOR LOADONCALL DISCARDABLE idc_divideropen.cur

/* @makedep: idc_movebutton.cur */
IDC_MOVEBUTTON CURSOR LOADONCALL DISCARDABLE idc_movebutton.cur

/* @makedep: idi_dragarrow.ico */
IDI_DRAGARROW ICON LOADONCALL DISCARDABLE idi_dragarrow.ico

/* @makedep: idi_tt_info_sm.ico */
IDI_TT_INFO_SM ICON LOADONCALL DISCARDABLE idi_tt_info_sm.ico

/* @makedep: idi_tt_warn_sm.ico */
IDI_TT_WARN_SM ICON LOADONCALL DISCARDABLE idi_tt_warn_sm.ico

/* @makedep: idi_tt_error_sm.ico */
IDI_TT_ERROR_SM ICON LOADONCALL DISCARDABLE idi_tt_error_sm.ico


/*
 * Everything specific to any language goes
 * in one of the specific files.
 * Note that you can and may override resources
 * which also have a neutral version. This is to
 * get localized bitmaps for example.
 */

#include "comctl_Bg.rc"
#include "comctl_Cn.rc"
#include "comctl_Cs.rc"
#include "comctl_De.rc"
#include "comctl_El.rc"
#include "comctl_En.rc"
#include "comctl_Eo.rc"
#include "comctl_Es.rc"
#include "comctl_Fr.rc"
#include "comctl_Hu.rc"
#include "comctl_It.rc"
#include "comctl_Ja.rc"
#include "comctl_Ko.rc"
#include "comctl_Nl.rc"
#include "comctl_No.rc"
#include "comctl_Pl.rc"
#include "comctl_Pt.rc"
#include "comctl_Ru.rc"
#include "comctl_Si.rc"
#include "comctl_Sv.rc"
#include "comctl_Th.rc"
#include "comctl_Tr.rc"
#include "comctl_Uk.rc"
