📄 main.cpp
字号:
#include "semantics.h"
#include <windows.h>
#define MAX_CHARS 200
HDC hDC;
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)
{
lpCmdLine="Draw.txt";
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);
}
}
#ifdef _BC_COMPILER
#include "semantics.h"
int main(int argc,char **argv)
{
int Result;
if(!InitGraph())
return -1;
if(argc!=2)
return -1;
Parser(argv[1]);
CloseGraph();
return 0;
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -