/*
 * USER resources
 *
 * Copyright 2001 Alexandre Julliard
 *
 * 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 "resources.h"

LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT

SYSMENU MENU
{
    MENUITEM "#msgctxt#window#&Restore", 61728
    MENUITEM "&Move", 61456
    MENUITEM "&Size", 61440
    MENUITEM "Mi&nimize", 61472
    MENUITEM "Ma&ximize", 61488
    MENUITEM SEPARATOR
    MENUITEM "&Close\tAlt+F4", 61536
    MENUITEM SEPARATOR
    MENUITEM "&About Wine", 61761
}

SYSMENUMDI MENU
{
    MENUITEM "#msgctxt#window#&Restore", 61728
    MENUITEM "&Move", 61456
    MENUITEM "&Size", 61440
    MENUITEM "Mi&nimize", 61472
    MENUITEM "Ma&ximize", 61488
    MENUITEM SEPARATOR
    MENUITEM "&Close\tCtrl+F4", 61536
    MENUITEM SEPARATOR
    MENUITEM "Nex&t\tCtrl+F6", 61504
}

EDITMENU MENU
{
    POPUP ""
    BEGIN
        MENUITEM "&Undo", EM_UNDO
        MENUITEM SEPARATOR
        MENUITEM "Cu&t", WM_CUT
        MENUITEM "&Copy", WM_COPY
        MENUITEM "&Paste", WM_PASTE
        MENUITEM "&Delete", WM_CLEAR
        MENUITEM SEPARATOR
        MENUITEM "Select &All", EM_SETSEL
    END
}

STRINGTABLE
{
    IDS_ERROR "Error"
    IDS_MDI_MOREWINDOWS "&More Windows..."
}

MSGBOX DIALOG 100, 80, 216, 168
STYLE DS_MODALFRAME | DS_NOIDLEMSG | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
BEGIN
    ICON "", MSGBOX_IDICON, 8, 20, 16, 16, WS_CHILD | WS_VISIBLE
    LTEXT "", MSGBOX_IDTEXT, 32, 4, 176, 48, WS_CHILD | WS_VISIBLE | WS_GROUP | SS_NOPREFIX
    PUSHBUTTON "OK", IDOK, 16, 56, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
    PUSHBUTTON "Cancel", IDCANCEL, 74, 56, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
    PUSHBUTTON "&Abort", IDABORT, 132, 56, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
    PUSHBUTTON "&Retry", IDRETRY, 190, 56, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
    PUSHBUTTON "&Ignore", IDIGNORE, 248, 56, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
    PUSHBUTTON "&Yes", IDYES, 306, 56, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
    PUSHBUTTON "&No", IDNO, 364, 56, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
    PUSHBUTTON "&Try Again", IDTRYAGAIN, 422, 56, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
    PUSHBUTTON "&Continue", IDCONTINUE, 480, 56, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
    PUSHBUTTON "Help", IDHELP, 538, 56, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
END

MDI_MOREWINDOWS DIALOG 20, 20, 232, 122
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Select Window"
FONT 8, "MS Shell Dlg"
BEGIN
    LISTBOX         MDI_IDC_LISTBOX, 5, 7, 222, 90, WS_VSCROLL | WS_HSCROLL /* defined in mdi.h */
    DEFPUSHBUTTON   "OK", IDOK, 75, 100, 35, 14
    PUSHBUTTON      "Cancel", IDCANCEL, 120, 100, 35, 14
END

LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL

/****************************************************************/
/* Bitmaps */

/* @makedep: resources/obm_trtype.bmp */
OBM_TRTYPE BITMAP resources/obm_trtype.bmp

/* @makedep: resources/obm_lfarrowi.bmp */
OBM_LFARROWI BITMAP resources/obm_lfarrowi.bmp

/* @makedep: resources/obm_rgarrowi.bmp */
OBM_RGARROWI BITMAP resources/obm_rgarrowi.bmp

/* @makedep: resources/obm_dnarrowi.bmp */
OBM_DNARROWI BITMAP resources/obm_dnarrowi.bmp

/* @makedep: resources/obm_uparrowi.bmp */
OBM_UPARROWI BITMAP resources/obm_uparrowi.bmp

/* @makedep: resources/obm_combo.bmp */
OBM_COMBO BITMAP resources/obm_combo.bmp

/* @makedep: resources/obm_mnarrow.bmp */
OBM_MNARROW BITMAP resources/obm_mnarrow.bmp

/* @makedep: resources/obm_lfarrowd.bmp */
OBM_LFARROWD BITMAP resources/obm_lfarrowd.bmp

/* @makedep: resources/obm_rgarrowd.bmp */
OBM_RGARROWD BITMAP resources/obm_rgarrowd.bmp

/* @makedep: resources/obm_dnarrowd.bmp */
OBM_DNARROWD BITMAP resources/obm_dnarrowd.bmp

/* @makedep: resources/obm_uparrowd.bmp */
OBM_UPARROWD BITMAP resources/obm_uparrowd.bmp

/* @makedep: resources/obm_restored.bmp */
OBM_RESTORED BITMAP resources/obm_restored.bmp

/* @makedep: resources/obm_zoomd.bmp */
OBM_ZOOMD BITMAP resources/obm_zoomd.bmp

/* @makedep: resources/obm_reduced.bmp */
OBM_REDUCED BITMAP resources/obm_reduced.bmp

/* @makedep: resources/obm_restore.bmp */
OBM_RESTORE BITMAP resources/obm_restore.bmp

/* @makedep: resources/obm_zoom.bmp */
OBM_ZOOM BITMAP resources/obm_zoom.bmp

/* @makedep: resources/obm_reduce.bmp */
OBM_REDUCE BITMAP resources/obm_reduce.bmp

/* @makedep: resources/obm_lfarrow.bmp */
OBM_LFARROW BITMAP resources/obm_lfarrow.bmp

/* @makedep: resources/obm_rgarrow.bmp */
OBM_RGARROW BITMAP resources/obm_rgarrow.bmp

/* @makedep: resources/obm_dnarrow.bmp */
OBM_DNARROW BITMAP resources/obm_dnarrow.bmp

/* @makedep: resources/obm_uparrow.bmp */
OBM_UPARROW BITMAP resources/obm_uparrow.bmp

/* @makedep: resources/obm_close.bmp */
OBM_CLOSE BITMAP resources/obm_close.bmp

/* @makedep: resources/obm_old_restore.bmp */
OBM_OLD_RESTORE BITMAP resources/obm_old_restore.bmp

/* @makedep: resources/obm_old_zoom.bmp */
OBM_OLD_ZOOM BITMAP resources/obm_old_zoom.bmp

/* @makedep: resources/obm_old_reduce.bmp */
OBM_OLD_REDUCE BITMAP resources/obm_old_reduce.bmp

/* @makedep: resources/obm_btncorners.bmp */
OBM_BTNCORNERS BITMAP resources/obm_btncorners.bmp

/* @makedep: resources/obm_checkboxes.bmp */
OBM_CHECKBOXES BITMAP resources/obm_checkboxes.bmp

/* @makedep: resources/obm_check.bmp */
OBM_CHECK BITMAP resources/obm_check.bmp

/* @makedep: resources/obm_btsize.bmp */
OBM_BTSIZE BITMAP resources/obm_btsize.bmp

/* @makedep: resources/obm_old_lfarrow.bmp */
OBM_OLD_LFARROW BITMAP resources/obm_old_lfarrow.bmp

/* @makedep: resources/obm_old_rgarrow.bmp */
OBM_OLD_RGARROW BITMAP resources/obm_old_rgarrow.bmp

/* @makedep: resources/obm_old_dnarrow.bmp */
OBM_OLD_DNARROW BITMAP resources/obm_old_dnarrow.bmp

/* @makedep: resources/obm_old_uparrow.bmp */
OBM_OLD_UPARROW BITMAP resources/obm_old_uparrow.bmp

/* @makedep: resources/obm_size.bmp */
OBM_SIZE BITMAP resources/obm_size.bmp

/* @makedep: resources/obm_old_close.bmp */
OBM_OLD_CLOSE BITMAP resources/obm_old_close.bmp


/****************************************************************/
/* Cursors */

/* @makedep: resources/ocr_normal.cur */
OCR_NORMAL CURSOR resources/ocr_normal.cur

/* @makedep: resources/ocr_ibeam.cur */
OCR_IBEAM CURSOR resources/ocr_ibeam.cur

/* @makedep: resources/ocr_wait.cur */
OCR_WAIT CURSOR resources/ocr_wait.cur

/* @makedep: resources/ocr_cross.cur */
OCR_CROSS CURSOR resources/ocr_cross.cur

/* @makedep: resources/ocr_up.cur */
OCR_UP CURSOR resources/ocr_up.cur

/* @makedep: resources/ocr_size.cur */
OCR_SIZE CURSOR resources/ocr_size.cur

/* @makedep: resources/ocr_icon.cur */
OCR_ICON CURSOR resources/ocr_icon.cur

/* @makedep: resources/ocr_sizenwse.cur */
OCR_SIZENWSE CURSOR resources/ocr_sizenwse.cur

/* @makedep: resources/ocr_sizenesw.cur */
OCR_SIZENESW CURSOR resources/ocr_sizenesw.cur

/* @makedep: resources/ocr_sizewe.cur */
OCR_SIZEWE CURSOR resources/ocr_sizewe.cur

/* @makedep: resources/ocr_sizens.cur */
OCR_SIZENS CURSOR resources/ocr_sizens.cur

/* @makedep: resources/ocr_sizeall.cur */
OCR_SIZEALL CURSOR resources/ocr_sizeall.cur

/* @makedep: resources/ocr_no.cur */
OCR_NO CURSOR resources/ocr_no.cur

/* @makedep: resources/ocr_hand.cur */
OCR_HAND CURSOR resources/ocr_hand.cur

/* @makedep: resources/ocr_appstarting.cur */
OCR_APPSTARTING CURSOR resources/ocr_appstarting.cur

/* @makedep: resources/ocr_help.cur */
OCR_HELP CURSOR resources/ocr_help.cur

/* @makedep: resources/ocr_dragobject.cur */
OCR_DRAGOBJECT CURSOR resources/ocr_dragobject.cur


/****************************************************************/
/* Icons */

/* @makedep: resources/oic_sample.ico */
OIC_SAMPLE ICON resources/oic_sample.ico

/* @makedep: resources/oic_hand.ico */
OIC_HAND ICON resources/oic_hand.ico

/* @makedep: resources/oic_ques.ico */
OIC_QUES ICON resources/oic_ques.ico

/* @makedep: resources/oic_bang.ico */
OIC_BANG ICON resources/oic_bang.ico

/* @makedep: resources/oic_note.ico */
OIC_NOTE ICON resources/oic_note.ico

/* @makedep: resources/oic_winlogo.ico */
OIC_WINLOGO ICON resources/oic_winlogo.ico


/****************************************************************/
/* Version */

#define WINE_FILEDESCRIPTION_STR "Wine core dll"
#define WINE_FILENAME_STR "user32.dll"

/* these values come from Windows XP SP2 */
#define WINE_FILEVERSION 5,1,2600,2180
#define WINE_FILEVERSION_STR "5.01.2600.2180"
#define WINE_PRODUCTVERSION 5,1,2600,2180
#define WINE_PRODUCTVERSION_STR "5.01.2600.2180"

#include "wine/wine_common_ver.rc"
