⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zscpascal.cpp

📁 袖珍型的pascal编译器
💻 CPP
字号:
// ZSCPascal.cpp : Defines the class behaviors for the application.

//
#include "stdafx.h"
#include "ZSCPascal.h"
#include "MainFrm.h"
#include "ChildFrm.h"
#include "ZSCPascalEditorDoc.h"
#include "ZSCPascalEditorView.h"
#include "ZSCAsmEditorDoc.h"
#include "ZSCAsmEditorView.h"
#include "TextViewDoc.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE

static char     THIS_FILE[] = __FILE__;

#endif

/////////////////////////////////////////////////////////////////////////////
// CZSCPascalApp
BEGIN_MESSAGE_MAP(CZSCPascalApp, CWinApp)
	//{{AFX_MSG_MAP(CZSCPascalApp)
	ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
	ON_COMMAND(ID_FILE_NEW, OnFileNew)
	//}}AFX_MSG_MAP
	// Standard file based document commands
	ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)
	ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)
	// Standard print setup command
	ON_COMMAND(ID_FILE_PRINT_SETUP, CWinApp::OnFilePrintSetup)
END_MESSAGE_MAP( )


/////////////////////////////////////////////////////////////////////////////
// CZSCPascalApp construction
CZSCPascalApp::CZSCPascalApp ()
{
	// TODO: add construction code here,
	// Place all significant initialization in InitInstance
}

/////////////////////////////////////////////////////////////////////////////
// The one and only CZSCPascalApp object
CZSCPascalApp theApp;


/////////////////////////////////////////////////////////////////////////////
// CZSCPascalApp initialization
BOOL CZSCPascalApp::InitInstance ()
{
	AfxEnableControlContainer( );

	// Standard initialization
	// If you are not using these features and wish to reduce the size
	//  of your final executable, you should remove from the following
	//  the specific initialization routines you do not need.
#ifdef _AFXDLL
	Enable3dControls( );

	// Call this when using MFC in a shared DLL
#else
	Enable3dControlsStatic( );

	// Call this when linking to MFC statically
#endif

	// Change the registry key under which our settings are stored.
	// You should modify this string to be something appropriate
	// such as the name of your company or organization.
	SetRegistryKey( _T( "Local AppWizard-Generated Applications" ) );
	LoadStdProfileSettings( );

	// Load standard INI file options (including MRU)
	// Register the application's document templates.  Document templates
	//  serve as the connection between documents, frame windows and views.

	CMultiDocTemplate     *pDocTemplate;
	pDocTemplate = new CMultiDocTemplate( IDR_ZSCPASTYPE, RUNTIME_CLASS( CZSCPascalEditorDoc ), RUNTIME_CLASS( CChildFrame ), 
			// custom MDI child frame
	RUNTIME_CLASS( CZSCPascalEditorView ) );
	AddDocTemplate( pDocTemplate );
	CMultiDocTemplate     *pDocTemplate2;
	pDocTemplate2 = new CMultiDocTemplate( IDR_ZSCASMTYPE, RUNTIME_CLASS( CZSCAsmEditorDoc ), RUNTIME_CLASS( CChildFrame ), 
			// custom MDI child frame
	RUNTIME_CLASS( CZSCAsmEditorView ) );
	AddDocTemplate( pDocTemplate2 );
	CMultiDocTemplate     *pDocTemplate3;
	pDocTemplate3 = new CMultiDocTemplate( IDR_ZSCREZTYPE, RUNTIME_CLASS( CTextViewDoc ), RUNTIME_CLASS( CMDIChildWnd ), 
			// custom MDI child frame
	RUNTIME_CLASS( CEditView ) );
	AddDocTemplate( pDocTemplate3 );

	// create main MDI Frame window
	CMainFrame * pMainFrame = new CMainFrame;

	if ( !pMainFrame->LoadFrame( IDR_MAINFRAME ) )
		return FALSE;
	m_pMainWnd = pMainFrame;

	// Enable drag/drop open
	m_pMainWnd->DragAcceptFiles( );

	// Enable DDE Execute open
	EnableShellOpen( );
	RegisterShellFileTypes( TRUE );

	// Parse command line for standard shell commands, DDE, file open
	CCommandLineInfo     cmdInfo;
	ParseCommandLine( cmdInfo );

	// Dispatch commands specified on the command line

	if ( !ProcessShellCommand( cmdInfo ) )
		return FALSE;

	// The main window has been initialized, so show and update it.
	pMainFrame->ShowWindow( SW_SHOWMAXIMIZED );
	pMainFrame->UpdateWindow( );
	return TRUE;
}

/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
class CAboutDlg : public CDialog
{
public:
	CAboutDlg( );

	// Dialog Data
	//{{AFX_DATA(CAboutDlg)
	enum { IDD = IDD_ABOUTBOX };
	//}}AFX_DATA
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CAboutDlg)
protected:
	virtual void DoDataExchange( CDataExchange *pDX );

	// DDX/DDV support
	//}}AFX_VIRTUAL
	// Implementation
protected:

	//{{AFX_MSG(CAboutDlg)
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};


CAboutDlg::CAboutDlg () :
	CDialog (CAboutDlg::IDD)
{
	//{{AFX_DATA_INIT(CAboutDlg)
	//}}AFX_DATA_INIT
}


void CAboutDlg::DoDataExchange (CDataExchange *pDX)
{
	CDialog::DoDataExchange( pDX );
	//{{AFX_DATA_MAP(CAboutDlg)
	//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
	//{{AFX_MSG_MAP(CAboutDlg)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP( )


// App command to run the dialog
void CZSCPascalApp::OnAppAbout ()
{
	CAboutDlg aboutDlg;
	aboutDlg.DoModal( );
}


void CZSCPascalApp::OnFileNew ()
{
	// Note: This must match the 0th substring
	// in string table string: IDR_MYTYPE
	const char     *MyViewStr = "ZSCPas";

	ASSERT(m_pDocManager);

	if ( m_pDocManager )
	{
		POSITION     PosTmp = m_pDocManager->GetFirstDocTemplatePosition( );

		// Loop through all the documents types until you find the one
		// you want (generally, the one the user sees is the 1st one,
		// but doesn't have to be).

		while ( PosTmp )
		{
			// Note: It's not necessary to do this dynamic_cast,
			// but why not be clean.

			CMultiDocTemplate     *pMultiDoc = (CMultiDocTemplate *)( GetNextDocTemplate( PosTmp ) );

			ASSERT(pMultiDoc);

			if ( pMultiDoc )
			{
				CString     StringTmp;

				// Snoop through the string in the string table string called
				// IDR_MYTYPE which yypically looks like this:
				// "My View\nMyProject\nMy\nMy Projects (*.my)\n.my\nMy.Document\nMy Document"
				// FYI: windowTitle means 0th substring
				pMultiDoc->GetDocString( StringTmp, CDocTemplate::windowTitle );

				// If this is the correct template

				if ( StringTmp == MyViewStr )
				{
					// This, in effect does what CDocManager::OnFileNew() would
					// have ultimately done anyway.
					pMultiDoc->OpenDocumentFile( NULL );

					// Ignore all remaining document types
					break;
				}
			}
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -