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

📄 main.cpp

📁 为简单的函数绘图语言编写一个解释器语法制导部分 语法制导注意:必须严格按照下面步骤调试程序
💻 CPP
字号:

//#ifdef _VC_COMPILER

#include "semantics.h"
#define MAX_CHARS 200

HWND hwnd;
char SrcFilePath[MAX_CHARS];
static char Name[]="Compiler";

static bool PrepareWindow(HINSTANCE,HINSTANCE,int);

static bool CheckSrcFile(LPSTR);

static LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);

int APIENTRY WinMain(HINSTANCE hInstance,
					 HINSTANCE hPrevInstance,
					 LPSTR     lpCmdLine,
					 int       nCmdShow)
{
	strcpy(SrcFilePath,lpCmdLine);

	if(PrepareWindow(hInstance,hPrevInstance,nCmdShow) != true)
	{
		MessageBox(NULL,"窗口初始化失败 !","错误",MB_OK);
		return 1;
	}
	if(!CheckSrcFile(lpCmdLine))return 1;

	Parser(SrcFilePath);

    MSG Msg;
	while(GetMessage(&Msg,NULL,0,0))
	{
		TranslateMessage(&Msg);
		DispatchMessage(&Msg);
	}
	return Msg.wParam;
}

bool PrepareWindow(HINSTANCE hInst,HINSTANCE hPrevInstance,int nCmdShow)
{
	HWND	hWnd;
	WNDCLASS W;

	memset(&W,0,sizeof(WNDCLASS));
	W.style=CS_HREDRAW | CS_VREDRAW;
	W.lpfnWndProc=WndProc;
	W.hInstance=hInst;
	W.hCursor=LoadCursor(NULL,IDC_ARROW);
	W.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);
	W.lpszClassName=Name;
	RegisterClass(&W);

	hWnd=CreateWindow(Name,Name,WS_OVERLAPPEDWINDOW,10,10,740,490,NULL,NULL,hInst,NULL);
	if(hWnd==NULL)return false;

	ShowWindow(hWnd,nCmdShow);
	UpdateWindow(hWnd);
	SetCursor(LoadCursor(hInst,IDC_ARROW));

	hDC=GetDC(hWnd);
	return true;
}

bool CheckSrcFile(LPSTR lpszCmdParam)
{
	FILE * file=NULL;

	if(strlen(lpszCmdParam)==0)
	{
		MessageBox(NULL,"未指定源程序文件 !","错误",MB_OK);
		return false;
	}
	if((file=fopen(lpszCmdParam,"r"))==NULL)
	{
		MessageBox(NULL,"打开源程序文件出错 !","错误",MB_OK);
		MessageBox(NULL,lpszCmdParam,"文件名",MB_OK);
		return false;
	}
	else fclose(file);
	return true;
}

LRESULT CALLBACK WndProc(HWND hWnd,UINT Message,WPARAM wparam,LPARAM lparam)
{
	switch(Message)
	{
	case WM_DESTROY:
		ReleaseDC(hWnd,hDC);
		PostQuitMessage(0);
		return 0;
		break;
	case WM_PAINT:
		PAINTSTRUCT pt;
		BeginPaint(hWnd,&pt);
		Parser(SrcFilePath);
		EndPaint(hWnd,&pt);
	default :
		return DefWindowProc(hWnd,Message,wparam,lparam);
	}
}
//#endif









⌨️ 快捷键说明

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