?? main.cpp
字號:
#include "semantic.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);
// ........... window 程序主函數
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);
// 進入window消息循環
MSG Msg;
while(GetMessage(&Msg, NULL, 0, 0))
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
return Msg.wParam;
}
// ...............初始化窗口函數實現
bool PrepareWindow(HINSTANCE hInst, HINSTANCE hPrevlnstance,
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);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -