

/*****************************************************************************\
 * Win32 Resource files grammar:
 *
 * Top level keywords/resource items:
 *	nameID ACCELERATOR
 *	[CHARACTERISTICS dword]
 *	[LANGUAGE language, sublanguage]
 *	[VERSION dword]
 *	BEGIN
 *		event, IDvalue [, type] [options]
 *		...
 *	END
 *-------------
 *	nameID BITMAP [loadmem] filename
 *-------------
 *	nameID BITMAP [loadmem]
 *	BEGIN
 *		rawdata
 *	END
 *-------------
 *	nameID CURSOR [loadmem] filename
 *-------------
 *	nameID CURSOR [loadmem]
 *	BEGIN
 *		rawdata
 *	END
 *-------------
 *	nameID DIALOG [loadmem] [EXSTYLE=extended-styles] x, y, width, height
 *	[CAPTION "text"]
 *	[CHARACTERISTICS dword]
 *	[CLASS class]
 *	[EXSTYLE=extended-styles]
 *	[FONT pointsize, face]
 *	[LANGUAGE language, sublanguage]
 *	[MENU menuname]
 *	[STYLE styles]
 *	[VERSION dword]
 *	BEGIN
 *		[controls]
 *	END
 *-------------
 *	nameID DIALOGEX [loadmem] x, y, width, height [, helpID]
 *	[CAPTION "text"]
 *	[CHARACTERISTICS dword]
 *	[CLASS class]
 *	[EXSTYLE=extended-styles]
 *	[FONT pointsize, face, weight, italic]
 *	[LANGUAGE language, sublanguage]
 *	[MENU menuname]
 *	[STYLE styles]
 *	[VERSION dword]
 *	BEGIN
 *		[controls]
 *	END
 *-------------
 *	nameID FONT [loadmem] filename
 *-------------
 *	nameID ICON [loadmem] filename
 *-------------
 *	nameID ICON [loadmem]
 *	BEGIN
 *		rawdata
 *	END
 *-------------
 *	LANGUAGE languageID, sublanguageID
 *-------------
 *	nameID MENU [loadmem]
 *	[CHARACTERISTICS dword]
 *	[LANGUAGE language, sublanguage]
 *	[VERSION dword]
 *	BEGIN
 *		[menuitems]
 *	END
 *-------------
 *	nameID MENUEX [loadmem]
 *	[CHARACTERISTICS dword]
 *	[LANGUAGE language, sublanguage]
 *	[VERSION dword]
 *	BEGIN
 *		[menuexitems]
 *	END
 *-------------
 *	nameID MESSAGETABLE [loadmem] filename
 *-------------
 *	nameID RCDATA [loadmem]
 *	[CHARACTERISTICS dword]
 *	[LANGUAGE language, sublanguage]
 *	[VERSION dword]
 *	BEGIN
 *		[raw-data]
 *	END
 *-------------
 *	STRINGTABLE [loadmem]
 *	[CHARACTERISTICS dword]
 *	[LANGUAGE language, sublanguage]
 *	[VERSION dword]
 *	BEGIN
 *		[stringID, "text"]
 *		...
 *	END
 *-------------
 *	versionID VERSIONINFO
 *	FILEVERSION	maj1, maj2, min1, min2
 *	PRODUCTVERSION	maj1, maj2, min1, min2
 *	FILEFLAGSMASK	(VS_FFI_FILEFLAGMASK)
 *	FILEOS		(VOS_*)
 *	FILETYPE	(VFT_*)
 *	FILEFLAGS	(VS_FF_*)
 *	FILESUBTYPE	(VFT2_*)
 *	BEGIN
 *		BLOCK "StringFileInfo"
 *		BEGIN
 *			BLOCK "language-charset"
 *			BEGIN
 *				[VALUE "Comments", "yep\0"]
 *				VALUE "CompanyName", "Wine Developer Team\0"
 *				VALUE "FileDescription", "Resource compiler\0"
 *				VALUE "FileVersion", "0.01 alpha\0"
 *				VALUE "InternalName", "winerc\0"
 *				[VALUE "LegalCopyright", "Copyright (c) B.A. Stultiens 1998\0"]
 *				[VALUE "LegalTrademarks", "...\0"]
 *				VALUE "OriginalFilename", "winerc\0"
 *				[VALUE "PrivateBuild", "Yes always!\0"
 *				VALUE "ProductName", "Wine\0"
 *				VALUE "ProductVersion", "0.01 alpha\0"
 *				[VALUE "SpecialBuild", "No never! Well, maybe.\0"
 *			END
 *		END
 *		BLOCK "VarFileInfo"
 *		BEGIN
 *			VALUE "Translation", languageID, charsetID
 *		END
 *	END
 *-------------
 *	nameID typeID [loadmem] filename
 *-------------
 *	nameID typeID [loadmem]
 *	BEGIN
 *		[raw-data]
 *	END
 *
 *****************************************************************************
 *
 * Dialog controls:
 *	CONTROL		text, ID, class, style, x, y, width, height [, exstyle]
 *
 *	LTEXT		text, ID, x, y, width, height [, style [, exstyle]]
 *	CTEXT		text, ID, x, y, width, height [, style [, exstyle]]
 *	RTEXT		text, ID, x, y, width, height [, style [, exstyle]]
 *
 *	ICON		text, ID, x, y, [width, height , style [, exstyle]]
 *
 *	EDITTEXT	ID, x, y, width, height [, style [, exstyle]]
 *
 *	AUTO3STATE	text, ID, x, y, width, height [, style [, exstyle]]
 *	AUTOCHECKBOX	text, ID, x, y, width, height [, style [, exstyle]]
 *	AUTORADIOBUTTON	text, ID, x, y, width, height [, style [, exstyle]]
 *	STATE3		text, ID, x, y, width, height [, style [, exstyle]]
 *	CHECKBOX	text, ID, x, y, width, height [, style [, exstyle]]
 *	PUSHBUTTON	text, ID, x, y, width, height [, style [, exstyle]]
 *	RADIOBUTTON	text, ID, x, y, width, height [, style [, exstyle]]
 *	DEFPUSHBUTTON	text, ID, x, y, width, height [, style [, exstyle]]
 *
 *	COMBOBOX	text, ID, x, y, width, height [, style [, exstyle]]
 *	GROUPBOX	text, ID, x, y, width, height [, style [, exstyle]]
 *	LISTBOX		text, ID, x, y, width, height [, style [, exstyle]]
 *	SCROLLBAR	text, ID, x, y, width, height [, style [, exstyle]]
 *
 * FIXME: This is documented, but I don't know the BS_PUSHBOX style
 *	PUSHBOX		text, ID, x, y, width, height [, style [, exstyle]]
\*****************************************************************************/

