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