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

📄 excaro.cpp

📁 caro program is written by VC++ and AI
💻 CPP
字号:
/****************************************************************************/
//
// ~~~~~~~~~~~~~~~~~~~~~ ExCaro Main Source Code File ~~~~~~~~~~~~~~~~~~~~~~~
//								ExCaro.cpp
//
//***************************************************************************/



// Include
#include "ExCaro.h"
#include <time.h>

// Define Variable
WNDTYPE		WndMain, WndChild, WndPlay, DlgSetting, DlgIcon, WndBtn[MAX_BUTTON], WndCredit;
SETTING		setting;
RULE		rule[MAX_RULE];
SKIN		skin;
PLAYER		player[MAX_PLAYER];
AVATAR		avatar[MAX_PLAYER];
EC			ec;
PLAY		play;
SCROLLINFO	siH, siV;
char *pMatrix=NULL;


//////////////////////////////////////////////////////////////////////////////////////////
//
//			~~~~~~~~~~~~ A N I T S O F T  E X C A R O ~~~~~~~~~~~~
//						-- M a i n  F u n c t i o n --
//
//////////////////////////////////////////////////////////////////////////////////////////

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int iCmdShow)
{
TCHAR szAppName[]	=	TEXT("ExCaro");
TCHAR szChildClass[]=	TEXT("WndChild");
TCHAR szPlayClass[]	=	TEXT("WndPlay");
TCHAR szCreditClass[]	=	TEXT("WndCredit");
MSG msg;
WNDCLASS wndclass;
TCHAR szTitle[50]="";
HACCEL hAecel;
int i;
HWND hwndStart;


	// Set Random for All Project
	srand( (unsigned)time( NULL ) );

	/*************************************************************************/
	// Init Window Main
	wndclass.style = CS_HREDRAW|CS_VREDRAW;
	wndclass.cbClsExtra =0;
	wndclass.cbWndExtra =0;
	wndclass.hbrBackground =(HBRUSH)GetStockObject(NULL_BRUSH);
	wndclass.hCursor =LoadCursor(NULL, IDC_ARROW);
	wndclass.hIcon = LoadIcon(hInstance,"IDI_ICON");
	wndclass.hInstance =hInstance;
	wndclass.lpfnWndProc = WndMainProc;
	wndclass.lpszClassName =szAppName;
	wndclass.lpszMenuName = NULL;

	strcat(szTitle,APPNAME);
	strcat(szTitle,VERSION);

	if(!RegisterClass(&wndclass))
	{
		MessageBox(NULL,TEXT("Can't run this program"),szTitle,MB_ICONERROR);
		return 0;
	}
	ec.hInst = hInstance;

	WndMain.hWnd =CreateWindow(szAppName,szTitle,WS_OVERLAPPEDWINDOW,
		(GetSystemMetrics(SM_CXSCREEN) - (XLEFT + XRIGHT + XBLOCK * 20)) / 2  , 
		(GetSystemMetrics(SM_CYSCREEN) - (YHEADER + YFOOTER + XBLOCK *20)) / 2, 
		XLEFT + XRIGHT + XBLOCK * 20 ,
		YHEADER + YFOOTER + XBLOCK *20 ,
		NULL,NULL,hInstance,NULL);

	/*************************************************************************/
	// Init Window Child
	wndclass.lpfnWndProc=WndChildProc;
	wndclass.hCursor =LoadCursor(NULL, IDC_ARROW);
	wndclass.lpszClassName=szChildClass;
	wndclass.lpszMenuName = 0;

	RegisterClass(&wndclass);
	WndChild.hWnd =CreateWindow(szChildClass,NULL, WS_CHILD | WS_VISIBLE,0,0,0,0, WndMain.hWnd ,NULL,hInstance,NULL);

	/*************************************************************************/
	// Init Window Play
	wndclass.lpfnWndProc=WndPlayProc;
	wndclass.hCursor =LoadCursor(hInstance,"IDC_CURSOR");
	wndclass.lpszClassName = szPlayClass;
	wndclass.lpszMenuName = 0;

	RegisterClass(&wndclass);
	WndPlay.hWnd =CreateWindow(szPlayClass,NULL,WS_CHILD | WS_VISIBLE, 0, 0, 0, 0,WndChild.hWnd,NULL, hInstance,NULL);
	SendMessage(WndChild.hWnd , WM_SIZE, 0, 0);

	/*************************************************************************/
	// Init Window Credit
	wndclass.lpfnWndProc = WndCreditProc;
	wndclass.hCursor =LoadCursor(NULL, IDC_ARROW);
	wndclass.lpszClassName = szCreditClass;
	wndclass.lpszMenuName = 0;

	RegisterClass(&wndclass);
	WndCredit.hWnd =CreateWindow(szCreditClass,NULL,WS_CHILD, 0, 0,0, 0, WndChild.hWnd,(HMENU) 0,hInstance,NULL);

	/************************************/
	// Create Button
	WndBtn[ID_PLAY].hWnd	 =	CreateWindow ( TEXT("button"), TEXT(""),WS_CHILD | WS_VISIBLE | BS_OWNERDRAW,10,YHEADER+10,XLEFT-10,25,WndMain.hWnd, (HMENU) ID_PLAY,ec.hInst, NULL) ;
	WndBtn[ID_SETTING].hWnd  =	CreateWindow ( TEXT("button"), TEXT(""),WS_CHILD | WS_VISIBLE | BS_OWNERDRAW,5,YHEADER+40,XLEFT-10,25,WndMain.hWnd, (HMENU) ID_SETTING,ec.hInst, NULL) ;
	WndBtn[ID_CREDIT].hWnd	 =	CreateWindow ( TEXT("button"), TEXT(""),WS_CHILD | WS_VISIBLE | BS_OWNERDRAW,5,YHEADER+70,XLEFT-10,25,WndMain.hWnd, (HMENU) ID_CREDIT,ec.hInst, NULL) ;

	WndBtn[ID_STATUS].hWnd	 =	CreateWindow ( TEXT("static"), TEXT(""),WS_CHILD | WS_VISIBLE ,0,0,0,0,WndMain.hWnd, (HMENU) ID_STATUS,ec.hInst, NULL) ;

	// Create Context Button
	for(i=0;i<MAX_CBUTTON;i++)
	{
		CreateWindow ( TEXT("button"), TEXT(""),WS_CHILD | BS_OWNERDRAW, (10) , (YHEADER + 10 + ( MAX_BUTTON - 1 ) * 30 + i * 30) , (XLEFT - 10) , (25) , WndMain.hWnd , HMENU( MAX_BUTTON + i) , ec.hInst , NULL) ;
		ShowWindow(GetDlgItem(WndMain.hWnd , MAX_BUTTON+i),SW_SHOW);
		InvalidateRect(GetDlgItem(WndMain.hWnd , MAX_BUTTON+i),NULL,FALSE);
	}

	/************************************/
	// Create Dialog Settings
	DlgSetting.hWnd = CreateDialog(ec.hInst,"IDD_SETTING",WndChild.hWnd ,DlgSettingProc);

	/*************************************************************************/
	// Show Window and Clear Playing
	// Show/Hide Menu
	HMENU hMenu;
	if(!setting.fMenu)
		hMenu=NULL;
	else
		hMenu = LoadMenu(ec.hInst , setting.iLang ? "EXCARO_VI" : "EXCARO_EN");

	SetMenu (WndMain.hWnd, hMenu) ;
	
	// Opacity ?
	if(setting.iOpacity <100)
		SetWindowTransparent(WndMain.hWnd ,setting.iOpacity );

	// Full Screen
	if(setting.fFullScreen) // if last session is Full Screen - restore it !
	{
		GetWindowRect( WndMain.hWnd , &ec.rOldMain);	// Back up window size for not Full Screen mode
		SetWindowLong (WndMain.hWnd , GWL_STYLE,WS_VISIBLE); //Full Screen
		MoveWindow(WndMain.hWnd ,0,0, GetSystemMetrics(SM_CXSCREEN) , GetSystemMetrics(SM_CYSCREEN),TRUE);
	}

	ShowWindow(WndMain.hWnd , SW_SHOW);
	UpdateWindow(WndMain.hWnd );

	hwndStart = CreateDialog(hInstance,"IDD_ABOUT", WndMain.hWnd, DlgAboutProc);
			
	NewGame();

	if(setting.fSound) PlaySoundFile(WndMain.hWnd, setting.szSoundFile);

	DestroyWindow(hwndStart);
	hwndStart =NULL;


	/*************************************************************************/
	// Get Message
	hAecel = LoadAccelerators(hInstance, szAppName);

	while(GetMessage(&msg,NULL,0,0))
	{
		if (!TranslateAccelerator (WndMain.hWnd, hAecel, &msg))
		{
			if(DlgSetting.hWnd ==0 || !IsDialogMessage(DlgSetting.hWnd , &msg))
			{
			
               TranslateMessage (&msg) ;
               DispatchMessage (&msg) ;
			}
		}
	}
	return msg.wParam;
}

⌨️ 快捷键说明

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