📄 main.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 + -