/*
 * Resource IDs (resource.h)
 *
 * Copyright 2008 Mikolaj Zalewski
 *
 * 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 <winuser.h>

#define IDD_CRASH_DLG   100
#define IDD_DETAILS_DLG 101

#define IDC_STATIC_BG   100
#define IDC_STATIC_TXT1 101
#define IDC_STATIC_TXT2 102
#define IDC_CRASH_TXT   103

#define IDM_DEBUG_POPUP 100

#define ID_DEBUG        200
#define ID_DETAILS      201
#define ID_SAVEAS       202

#define IDS_AUTO_CAPTION      16
#define IDS_INVALID_PARAMS    17
#define IDS_UNIDENTIFIED      18
#define IDS_TEXT_FILES        19
#define IDS_ALL_FILES         20
#define IDS_SAVE_ERROR        21
#define IDS_LOADING           22
