/*
 * OleView (resource.h)
 *
 * Copyright 2006 Piotr Caban
 *
 * 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 IDS_APPNAME                1
#define IDS_APPTITLE               2
#define IDM_MENU                   3
#define IDB_TOOLBAR                4
#define IDA_OLEVIEW                5
#define IDS_TYPELIBTITLE           6

#define IDS_READY                  10
#define IDS_ABOUT                  20

#define IDS_OPEN                   30
#define IDS_OPEN_FILTER_TYPELIB    31
#define IDS_OPEN_FILTER_ALL        32

#define IDM_BIND                   100
#define IDM_TYPELIB                101
#define IDM_SYSCONF                102
#define IDM_REGEDIT                103
#define IDM_EXIT                   104
#define IDM_TYPEINFO               110
#define IDM_CREATEINST             111
#define IDM_CREATEINSTON           112
#define IDM_RELEASEINST            113
#define IDM_COPYCLSID              114
#define IDM_HTMLTAG                115
#define IDM_VIEW                   116
#define IDM_FLAG_INSERV            130
#define IDM_FLAG_INHANDL           131
#define IDM_FLAG_LOCSERV           132
#define IDM_FLAG_REMSERV           133
#define IDM_EXPERT                 120
#define IDM_HIDDEN                 121
#define IDM_TOOLBAR                122
#define IDM_STATUSBAR              123
#define IDM_REFRESH                124
#define IDM_ABOUT                  125

#define IDS_TREE_OC                200
#define IDS_TREE_GBCC              201
#define IDS_TREE_O1O               202
#define IDS_TREE_CLO               203
#define IDS_TREE_AO                204
#define IDS_TREE_AID               210
#define IDS_TREE_TL                220
#define IDS_TL_VER                 221
#define IDS_TREE_I                 230

#define IDS_TAB_REG                250
#define IDS_TAB_IMPL               251
#define IDS_TAB_ACTIV              252

#define IDS_CGCOFAIL               300
#define IDS_ERROR_UNKN             301

#define IDS_TRUE                   310
#define IDS_FALSE                  311
#define IDS_BYTES                  312

#define IDS_ERROR_LOADTYPELIB      400
#define IDS_INHERITINTERFACES      401

#define DLG_CREATEINSTON           1000
#define IDC_MACHINE                1001

#define DLG_SYSCONF                1010
#define IDC_ENABLEDCOM             1011
#define IDC_ENABLEREMOTE           1012

#define DLG_IPERSIST_IV            1020

#define DLG_DEFAULT_IV             1030
#define IDC_VIEWTYPEINFO           1031
#define IDC_LABEL                  1032
#define IDC_IDENTIFIER             1033

#define DLG_IPERSISTSTREAM_IV      1040
#define IDC_ISDIRTY                1041
#define IDC_GETSIZEMAX             1042
#define IDC_ISDIRTY_BUTTON         1043
#define IDC_GETSIZEMAX_BUTTON      1044

#define IDM_SAVEAS                 3001
#define IDM_CLOSE                  3002
#define IDM_GROUP                  3003
