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

📄 main.cpp

📁 这是一个编译原理中
💻 CPP
字号:

#include <windows.h>
#include "resource.h"

#define  MYWIDTH   50

TCHAR    szAppName[] = TEXT("RecogniseNumber");
TCHAR    szTitle[]   = TEXT("Title");      //标题窗口类名
TCHAR    szTable[]   = TEXT("StateTable");
TCHAR    szRecog[]  = TEXT("Recognise");

void RegisterWindowClass();
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
LRESULT CALLBACK TitleWindowProc(HWND,UINT,WPARAM,LPARAM);
LRESULT CALLBACK StateTableWndProc(HWND,UINT,WPARAM,LPARAM);
LRESULT CALLBACK RecogniseWndProc(HWND,UINT,WPARAM,LPARAM);

int WINAPI WinMain(HINSTANCE hInst,HINSTANCE hPrev,LPSTR lpCmdLine,int nShowCmd)
{		
	HWND     hwnd;
	MSG      msg;	
	DWORD    style;

	RegisterWindowClass();

	style  = WS_OVERLAPPEDWINDOW;
	style &= (~WS_MAXIMIZEBOX);
	style &= (~WS_SIZEBOX);
	style |= WS_CLIPCHILDREN;
	hwnd = CreateWindow(szAppName,TEXT("有限状态自动机"),style,
						50,50,720,480,
						NULL,NULL,hInst,NULL);

	ShowWindow(hwnd,SW_SHOW);
	UpdateWindow(hwnd);

	while(GetMessage(&msg,NULL,0,0))
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}

	return 0;
}

LRESULT CALLBACK WndProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
{
	RECT    rect;
	POINT   pos;

	DWORD style;	
	long   x,y,w,h;
	HINSTANCE  hInst;
	static HWND hRecog;

	switch(msg)
	{	
	case WM_CREATE:
		hInst = GetModuleHandle(NULL);
		style = WS_CHILD | WS_VISIBLE;//| WS_CLIPCHILDREN 
        x = y = 0; w = 14 * MYWIDTH;  h = 2 * MYWIDTH;
     	CreateWindow(szTitle,NULL,style,
				     x,y,w,h,
					  hwnd,(HMENU)1,hInst,NULL);

		x = 0; y = 2 * MYWIDTH; 
		w = 8 * MYWIDTH; h = 8 * MYWIDTH;
		CreateWindow(szTable,NULL,style,
		 		     x,y,w,h,
					 hwnd,(HMENU)2,hInst,NULL);

		x = 8 * MYWIDTH; y = 2 * MYWIDTH; 
		w = 6 * MYWIDTH; h = 6 * MYWIDTH;
		hRecog = CreateWindow(szRecog,NULL,style,
						     x,y,w,h,
							 hwnd,(HMENU)3,hInst,NULL);
		return 0;
	case WM_SETCURSOR:
		GetClientRect(hwnd,&rect);
		GetCursorPos(&pos);
		ScreenToClient(hwnd,&pos);
		if (PtInRect(&rect,pos)) 
		{
			SetCursor(LoadCursor(NULL,IDC_SIZEALL));
			return TRUE;
		}		
		break;		
	case WM_NCHITTEST:		
		GetClientRect(hwnd,&rect);
		GetCursorPos(&pos);		
		ScreenToClient(hwnd,&pos);
		if (PtInRect(&rect,pos)) 	return HTCAPTION;				
		break;		
		return 0;
	case WM_SETFOCUS:
		SetFocus(hRecog);
		return 0;
	case WM_DESTROY:		
		PostQuitMessage(0);
		return 0;
	}
	return DefWindowProc(hwnd,msg,wParam,lParam);
}

//注册各个窗口类
void RegisterWindowClass()
{
	WNDCLASS  wndclass;	
	HINSTANCE hInst;

	hInst = GetModuleHandle(NULL);
    //注册主窗口类
	wndclass.cbClsExtra  = 0;
	wndclass.cbWndExtra  = 0;
	wndclass.hbrBackground = (HBRUSH)(COLOR_WINDOWTEXT + 1);
	wndclass.hCursor     = LoadCursor(NULL,IDC_SIZEALL);
	wndclass.hIcon       = LoadIcon(hInst,MAKEINTRESOURCE(IDI_ICON1));
	wndclass.hInstance   = hInst;
	wndclass.lpfnWndProc = WndProc;
	wndclass.lpszClassName = szAppName;
	wndclass.lpszMenuName  = NULL;
	wndclass.style         = CS_VREDRAW | CS_HREDRAW;
	RegisterClass(&wndclass);
	//注册标题窗口类			
	wndclass.lpfnWndProc   = TitleWindowProc;
	wndclass.lpszClassName = szTitle;
	RegisterClass(&wndclass);
	//注册状态转换表窗口类
	wndclass.lpfnWndProc   = StateTableWndProc;
	wndclass.lpszClassName = szTable;
	RegisterClass(&wndclass);
	// 注册识别窗口类	
	wndclass.lpfnWndProc   = RecogniseWndProc;
	wndclass.lpszClassName = szRecog;
	RegisterClass(&wndclass);
}

⌨️ 快捷键说明

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