//Microsoft Visual C++ generated resource script.
//
#include "resource.h"

#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//

#include "afxres.h"

/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS

#ifdef APSTUDIO_INVOKED

/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//

1 TEXTINCLUDE
BEGIN
	"resource.h\0"
END

2 TEXTINCLUDE
BEGIN
	"#include ""afxres.h""\r\n"
	"\0"
END

3 TEXTINCLUDE
BEGIN
    "#define _AFX_NO_SPLITTER_RESOURCES\r\n"
    "#define _AFX_NO_OLE_RESOURCES\r\n"
    "#define _AFX_NO_TRACKER_RESOURCES\r\n"
    "#define _AFX_NO_PROPERTY_RESOURCES\r\n"
	"\r\n"
	"#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n"
	"LANGUAGE 9, 1\r\n"
	"#pragma code_page(1252)\r\n"
	"#include ""res\\mfc1.rc2""  // non-Microsoft Visual C++ edited resources\r\n"
	"#include ""afxres.rc""  	// Standard components\r\n"
	"#include ""afxprint.rc""	// printing/print preview resources\r\n"
	"#endif\r\n"
	"\0"
END

#endif    // APSTUDIO_INVOKED


/////////////////////////////////////////////////////////////////////////////
//
// Icon
//

// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
LANGUAGE 9, 1
#pragma code_page(1252)
IDR_MAINFRAME           ICON         "res\\mfc1.ico"
IDR_mfc1TYPE         ICON         "res\\mfc1Doc.ico"
#endif
/////////////////////////////////////////////////////////////////////////////
//
// Bitmap
//

IDR_MAINFRAME           BITMAP      "res\\Toolbar.bmp"

/////////////////////////////////////////////////////////////////////////////
//
// Toolbar
//

IDR_MAINFRAME TOOLBAR   16, 15
BEGIN
    BUTTON      ID_FILE_NEW
    BUTTON      ID_FILE_OPEN
    BUTTON      ID_FILE_SAVE
	SEPARATOR
    BUTTON      ID_EDIT_CUT
    BUTTON      ID_EDIT_COPY
    BUTTON      ID_EDIT_PASTE
	SEPARATOR
    BUTTON      ID_FILE_PRINT
    BUTTON      ID_APP_ABOUT
END



#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
LANGUAGE 9, 1
#pragma code_page(1252)
/////////////////////////////////////////////////////////////////////////////
//
// Menu
//

IDR_MAINFRAME MENU
BEGIN
	POPUP "&File"
	BEGIN
		MENUITEM "&New\tCtrl+N",                ID_FILE_NEW
		MENUITEM "&Open...\tCtrl+O",            ID_FILE_OPEN
		MENUITEM SEPARATOR
		MENUITEM "P&rint Setup...",             ID_FILE_PRINT_SETUP
		MENUITEM SEPARATOR
		MENUITEM "Recent File",                 ID_FILE_MRU_FILE1,GRAYED
		MENUITEM SEPARATOR
		MENUITEM "&Close",                      ID_FILE_CLOSE
		MENUITEM "E&xit",                       ID_APP_EXIT
	END
	POPUP "&View"
	BEGIN
		MENUITEM "&Toolbar",                    ID_VIEW_TOOLBAR
		MENUITEM "&Status Bar",                 ID_VIEW_STATUS_BAR
	END
	POPUP "&Help"
	BEGIN
		MENUITEM "&About mfc1...",          ID_APP_ABOUT
	END
END
IDR_mfc1TYPE MENU
BEGIN
	POPUP "&File"
	BEGIN
		MENUITEM "&New\tCtrl+N",                ID_FILE_NEW
		MENUITEM "&Open...\tCtrl+O",            ID_FILE_OPEN
		MENUITEM "&Close",                      ID_FILE_CLOSE
		MENUITEM "&Save\tCtrl+S",               ID_FILE_SAVE
		MENUITEM "Save &As...",                 ID_FILE_SAVE_AS
		MENUITEM SEPARATOR
		MENUITEM "&Print...\tCtrl+P",           ID_FILE_PRINT
		MENUITEM "Print Pre&view",              ID_FILE_PRINT_PREVIEW
		MENUITEM "P&rint Setup...",             ID_FILE_PRINT_SETUP
		MENUITEM SEPARATOR
		MENUITEM "Recent File",                 ID_FILE_MRU_FILE1,GRAYED
		MENUITEM SEPARATOR
		MENUITEM "E&xit",                       ID_APP_EXIT
	END
	POPUP "&Edit"
	BEGIN
		MENUITEM "&Undo\tCtrl+Z",               ID_EDIT_UNDO
		MENUITEM SEPARATOR
		MENUITEM "Cu&t\tCtrl+X",                ID_EDIT_CUT
		MENUITEM "&Copy\tCtrl+C",               ID_EDIT_COPY
		MENUITEM "&Paste\tCtrl+V",              ID_EDIT_PASTE
	END
	POPUP "&View"
	BEGIN
		MENUITEM "&Toolbar",                    ID_VIEW_TOOLBAR
		MENUITEM "&Status Bar",                 ID_VIEW_STATUS_BAR
	END
	POPUP "&Window"
	BEGIN
		MENUITEM "&New Window",                 ID_WINDOW_NEW
		MENUITEM "&Cascade",                    ID_WINDOW_CASCADE
		MENUITEM "&Tile",                       ID_WINDOW_TILE_HORZ
		MENUITEM "&Arrange Icons",              ID_WINDOW_ARRANGE
	END
	POPUP "&Help"
	BEGIN
		MENUITEM "&About mfc1...",          ID_APP_ABOUT
	END
END


/////////////////////////////////////////////////////////////////////////////
//
// Accelerator
//

IDR_MAINFRAME ACCELERATORS
BEGIN
	"N",            ID_FILE_NEW,            VIRTKEY,CONTROL
	"O",            ID_FILE_OPEN,           VIRTKEY,CONTROL
	"S",            ID_FILE_SAVE,           VIRTKEY,CONTROL
	"P",            ID_FILE_PRINT,          VIRTKEY,CONTROL
	"Z",            ID_EDIT_UNDO,           VIRTKEY,CONTROL
	"X",            ID_EDIT_CUT,            VIRTKEY,CONTROL
	"C",            ID_EDIT_COPY,           VIRTKEY,CONTROL
	"V",            ID_EDIT_PASTE,          VIRTKEY,CONTROL
	VK_BACK,        ID_EDIT_UNDO,           VIRTKEY,ALT
	VK_DELETE,      ID_EDIT_CUT,            VIRTKEY,SHIFT
	VK_INSERT,      ID_EDIT_COPY,           VIRTKEY,CONTROL
	VK_INSERT,      ID_EDIT_PASTE,          VIRTKEY,SHIFT
	VK_F6,          ID_NEXT_PANE,           VIRTKEY
	VK_F6,          ID_PREV_PANE,           VIRTKEY,SHIFT
END

/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//

#if _MSC_VER < 1300
#define DS_SHELLFONT_FLAG 0
#else
#define DS_SHELLFONT_FLAG DS_SHELLFONT
#endif

IDD_ABOUTBOX DIALOGEX   0, 0, 235, 55
CAPTION "About mfc1"
STYLE DS_MODALFRAME | DS_SHELLFONT_FLAG | WS_POPUP | WS_CAPTION | WS_SYSMENU
FONT 8, "MS Shell Dlg"
BEGIN
	ICON            IDR_MAINFRAME,IDC_STATIC,11,17,20,20
	LTEXT           "mfc1 Version 1.0",IDC_STATIC,40,10,119,8,
                    SS_NOPREFIX
	LTEXT           "Copyright (C) 2011",IDC_STATIC,40,25,119,8
	DEFPUSHBUTTON   "OK",IDOK,178,7,50,16,WS_GROUP
END


/////////////////////////////////////////////////////////////////////////////
//
// Version
//

VS_VERSION_INFO     VERSIONINFO
  FILEVERSION       1,0,0,1
  PRODUCTVERSION    1,0,0,1
 FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
 FILEFLAGS 0x1L
#else
 FILEFLAGS 0x0L
#endif
 FILEOS 0x4L
 FILETYPE 0x1L
 FILESUBTYPE 0x0L
BEGIN
	BLOCK "StringFileInfo"
	BEGIN
        BLOCK "040904e4"
		BEGIN
            VALUE "CompanyName", "TODO: <Company name>"
            VALUE "FileDescription", "TODO: <File description>"
			VALUE "FileVersion",     "1.0.0.1"
			VALUE "InternalName",    "mfc1.exe"
            VALUE "LegalCopyright", "TODO: (c) <Company name>.  All rights reserved."
			VALUE "OriginalFilename","mfc1.exe"
            VALUE "ProductName", "TODO: <Product name>"
			VALUE "ProductVersion",  "1.0.0.1"
		END
	END
	BLOCK "VarFileInfo"
	BEGIN
		VALUE "Translation", 0x0409, 1252
    END
END

/////////////////////////////////////////////////////////////////////////////
//
// DESIGNINFO
//

#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO
BEGIN
    IDD_ABOUTBOX, DIALOG
    BEGIN
        LEFTMARGIN, 7
        RIGHTMARGIN, 228
        TOPMARGIN, 7
        BOTTOMMARGIN, 48
    END
END
#endif    // APSTUDIO_INVOKED

/////////////////////////////////////////////////////////////////////////////
//
// String Table
//

STRINGTABLE
BEGIN
// Non-mac-targeting apps remove the two extra substrings
	IDR_MAINFRAME           "mfc1"
  // has a file suffix - shell file type too
	IDR_mfc1TYPE         "\nmfc1\nmfc1\nmfc1 Files (*.mf1)\n.mf1\nmfc1.Document\nmfc1.Document"
END
STRINGTABLE
BEGIN
	AFX_IDS_APP_TITLE       "mfc1"
	AFX_IDS_IDLEMESSAGE     "Ready"
END
STRINGTABLE
BEGIN
	ID_INDICATOR_EXT        "EXT"
	ID_INDICATOR_CAPS       "CAP"
	ID_INDICATOR_NUM        "NUM"
	ID_INDICATOR_SCRL       "SCRL"
	ID_INDICATOR_OVR        "OVR"
	ID_INDICATOR_REC        "REC"
END
STRINGTABLE
BEGIN
	ID_FILE_NEW             "Create a new document\nNew"
	ID_FILE_OPEN            "Open an existing document\nOpen"
	ID_FILE_CLOSE           "Close the active document\nClose"
	ID_FILE_SAVE            "Save the active document\nSave"
	ID_FILE_SAVE_AS         "Save the active document with a new name\nSave As"
	ID_FILE_PAGE_SETUP      "Change the printing options\nPage Setup"
	ID_FILE_PRINT_SETUP     "Change the printer and printing options\nPrint Setup"
	ID_FILE_PRINT           "Print the active document\nPrint"
	ID_FILE_PRINT_PREVIEW   "Display full pages\nPrint Preview"
	ID_APP_ABOUT            "Display program information, version number and copyright\nAbout"
	ID_APP_EXIT             "Quit the application; prompts to save documents\nExit"
	ID_FILE_MRU_FILE1       "Open this document"
	ID_FILE_MRU_FILE2       "Open this document"
	ID_FILE_MRU_FILE3       "Open this document"
	ID_FILE_MRU_FILE4       "Open this document"
	ID_FILE_MRU_FILE5       "Open this document"
	ID_FILE_MRU_FILE6       "Open this document"
	ID_FILE_MRU_FILE7       "Open this document"
	ID_FILE_MRU_FILE8       "Open this document"
	ID_FILE_MRU_FILE9       "Open this document"
	ID_FILE_MRU_FILE10      "Open this document"
	ID_FILE_MRU_FILE11      "Open this document"
	ID_FILE_MRU_FILE12      "Open this document"
	ID_FILE_MRU_FILE13      "Open this document"
	ID_FILE_MRU_FILE14      "Open this document"
	ID_FILE_MRU_FILE15      "Open this document"
	ID_FILE_MRU_FILE16      "Open this document"
	ID_NEXT_PANE            "Switch to the next window pane\nNext Pane"
	ID_PREV_PANE            "Switch back to the previous window pane\nPrevious Pane"
	ID_WINDOW_NEW           "Open another window for the active document\nNew Window"
	ID_WINDOW_ARRANGE       "Arrange icons at the bottom of the window\nArrange Icons"
	ID_WINDOW_CASCADE       "Arrange windows so they overlap\nCascade Windows"
	ID_WINDOW_TILE_HORZ     "Arrange windows as non-overlapping tiles\nTile Windows"
	ID_WINDOW_TILE_VERT     "Arrange windows as non-overlapping tiles\nTile Windows"
	ID_WINDOW_SPLIT         "Split the active window into panes\nSplit"
	ID_EDIT_CLEAR           "Erase the selection\nErase"
	ID_EDIT_CLEAR_ALL       "Erase everything\nErase All"
	ID_EDIT_COPY            "Copy the selection and put it on the Clipboard\nCopy"
	ID_EDIT_CUT             "Cut the selection and put it on the Clipboard\nCut"
	ID_EDIT_FIND            "Find the specified text\nFind"
	ID_EDIT_PASTE           "Insert Clipboard contents\nPaste"
	ID_EDIT_REPEAT          "Repeat the last action\nRepeat"
	ID_EDIT_REPLACE         "Replace specific text with different text\nReplace"
	ID_EDIT_SELECT_ALL      "Select the entire document\nSelect All"
	ID_EDIT_UNDO            "Undo the last action\nUndo"
	ID_EDIT_REDO            "Redo the previously undone action\nRedo"
	ID_VIEW_TOOLBAR         "Show or hide the toolbar\nToggle ToolBar"
	ID_VIEW_STATUS_BAR      "Show or hide the status bar\nToggle StatusBar"
END

STRINGTABLE
BEGIN
	AFX_IDS_SCSIZE          "Change the window size"
	AFX_IDS_SCMOVE          "Change the window position"
	AFX_IDS_SCMINIMIZE      "Reduce the window to an icon"
	AFX_IDS_SCMAXIMIZE      "Enlarge the window to full size"
	AFX_IDS_SCNEXTWINDOW    "Switch to the next document window"
	AFX_IDS_SCPREVWINDOW    "Switch to the previous document window"
	AFX_IDS_SCCLOSE         "Close the active window and prompts to save the documents"
	AFX_IDS_SCRESTORE       "Restore the window to normal size"
	AFX_IDS_SCTASKLIST      "Activate Task List"
	AFX_IDS_MDICHILD        "Activate this window"
	AFX_IDS_PREVIEW_CLOSE   "Close print preview mode\nCancel Preview"
END

#endif

#ifdef _UNICODE
IDR_MANIFEST	RT_MANIFEST	"res\\mfc1.manifest"
#endif

#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//

#define _AFX_NO_SPLITTER_RESOURCES
#define _AFX_NO_OLE_RESOURCES
#define _AFX_NO_TRACKER_RESOURCES
#define _AFX_NO_PROPERTY_RESOURCES

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
LANGUAGE 9, 1
#pragma code_page(1252)
#include "res\\mfc1.rc2"  // non-Microsoft Visual C++ edited resources
#include "afxres.rc"  	// Standard components
#include "afxprint.rc"  // printing/print preview resources
#endif
#endif    // not APSTUDIO_INVOKED
