📄 bomb.c~
字号:
int i;
const char* layer = NULL;
RECT max_rect = {0, 0, 0, 0};
for (i = 1; i < args; i++) {
if (strcmp (arg[i], "-layer") == 0) {
layer = arg[i + 1];
break;
}
}
GetLayerInfo (layer, &max_rect, NULL, NULL, NULL);
if (JoinLayer (layer, arg[0], max_rect.left, max_rect.top,
max_rect.left + 1024,
max_rect.top + 768) == INV_LAYER_HANDLE) {
printf ("JoinLayer: invalid layer handle.\n");
exit (1);
}
#endif
InitMyWinCreateInfo(&CreateInfo);
hMainWnd = CreateMainWindow(&CreateInfo); //建立主窗口
if (hMainWnd == HWND_INVALID)
#ifdef _LITE_VERSION
return 0;
#else
return NULL;
#endif
ShowWindow(hMainWnd,SW_SHOWNORMAL); //显示主窗口 /*消息循环 *GetMessage:从应用程序的消息队列中取出一条信息 *TranslateMessage:用于把击键消息转换为字符消息(MSG_CHAR) *DispatchMessage:把当前消息发送到对应的窗口过程函数中去,由窗口过程函数对消息进行处理 *当GetMessage函数接收到由PostQuitMessage函数发送的一个MSG_QUIT消息时,GetMessage函数返回值0,循环终止*/
while( GetMessage(&Msg, hMainWnd) ) {
TranslateMessage (&Msg);
DispatchMessage(&Msg);
}
MainWindowThreadCleanup(hMainWnd);
#ifdef _LITE_VERSION
return 0;
#else
return NULL;
#endif
}
#ifndef _LITE_VERSION
int MiniGUIMain(int args, const char* arg[])
{
#ifdef _IME_GB2312
GBIMEWindow (HWND_DESKTOP);
#endif
TestMyWindow (NULL);
return 0;
}
#endif
/********** create a hosted about window****//***********************************************************名 称:AbHostedWinProc()*功 能:绘制"The about window" 窗口内容*入口参数:hWnd 当前窗口(即接收信息的窗口)的句柄* message 接收到的消息标识* wParam 消息参数1* lParam 消息参数2*出口参数: 返回0**********************************************************/
int AbHostedWinProc (HWND hWnd, int message, WPARAM wParam, LPARAM lParam)
{
switch (message) {
case MSG_CREATE: //窗口建立消息
break;
case MSG_PAINT: //窗口绘图消息
{
HDC hdc;
hdc = BeginPaint (hWnd); //获取窗口设备上下文句柄
SetBkColor(hdc,COLOR_lightgray); //设置文本背景颜色
TextOut (hdc, 10, 25, "Bomb Game Ver 1.0 (2000/04/11)"); //输出字符串
TextOut (hdc, 10, 55,
"Author: Mis. Zheng Xiang (xiang_zi@263.net).");
TextOut (hdc, 10, 75,
" Mis. Glory (glory@263.net).");
EndPaint (hWnd, hdc); //释放窗口设备上下文句柄
}
return 0;
case MSG_CLOSE: //关闭窗口消息
DestroyMainWindow (hWnd); //销毁主窗口
return 0;
}
return DefaultMainWinProc(hWnd, message, wParam, lParam); //默认的主窗口过程函数
}/***********************************************************名 称:InitAbHostedCreateInfo()*功 能:建立"The about window" 的主窗口*入口参数:hHosting 当前窗口的句柄* pCreateInfo 主窗口*出口参数: 返回0**********************************************************/
void InitAbHostedCreateInfo (HWND hHosting, PMAINWINCREATE pCreateInfo)
{
pCreateInfo->dwStyle = WS_BORDER | WS_CAPTION | WS_VISIBLE; //窗口风格设置
pCreateInfo->dwExStyle = WS_EX_NONE; //不使用窗口扩展风格
pCreateInfo->spCaption = "The about window" ; //窗口标题
pCreateInfo->hMenu = 0; //无下拉式菜单
pCreateInfo->hCursor = GetSystemCursor(0); //设置窗口光标
pCreateInfo->hIcon = 0; //窗口无图标
pCreateInfo->MainWindowProc = AbHostedWinProc; //窗口过程函数
pCreateInfo->lx = 100; //窗口的位置,大小
pCreateInfo->ty = 200;
pCreateInfo->rx = 540;
pCreateInfo->by = 390;
pCreateInfo->iBkColor = COLOR_lightgray; //窗口背景色
pCreateInfo->dwAddData = 0; //无附加数据
pCreateInfo->hHosting = hHosting; //托管窗口句柄
}
/*************************** High Scores Window ******************************//***********************************************************名 称:HighScoreWinPro()*功 能:绘制"The about window" 窗口内容*入口参数:hWnd 当前窗口(即接收信息的窗口)的句柄* message 接收到的消息标识* wParam 消息参数1* lParam 消息参数2*出口参数: 返回0**********************************************************/
#define IDC_RESET 110
int HighScoreWinProc (HWND hWnd, int message, WPARAM wParam, LPARAM lParam)
{
static HWND hRESET, hOK; //定义两个窗口句柄
switch (message) {
case MSG_CREATE: //窗口建立消息
hRESET = CreateWindow ("button",
"Reset",
WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE,
IDC_RESET,
100, 145, 60, 26, hWnd, 0); //创建一个重设置窗口
hOK = CreateWindow ("button",
"Ok",
WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE,
IDOK,
220, 145, 60, 26, hWnd, 0); //创建一个确定窗口
break;
case MSG_COMMAND: //命令消息
{
int id = LOWORD(wParam); //取得控件ID
FILE* pHighscore;
int i;
/*取得控件ID为RESET,取得通知码消息是用户单击此按钮*/
if (id == IDC_RESET && HIWORD(wParam) == BN_CLICKED) { /*三个模式默认都是,最高分999,姓名unknown*/
for (i = 0; i < 3; i++){
score[i].highscore = 999;
strcpy(score[i].name, "unknown");
}
/*如果写形式打开记录文件,记录最高分*/
if ((pHighscore = fopen(get_record_file(), "w+"))){
for (i = 0; i < 3; i++)
fprintf(pHighscore, "%d, %s\n",
score[i].highscore,score[i].name); /*记录最高分*/
fclose(pHighscore);
}
InvalidateRect(hWnd, NULL, TRUE);
} /*取得控件ID为OK,取得通知码消息是用户单击此按钮*/
if (id == IDOK && HIWORD(wParam) == BN_CLICKED)
PostMessage(hWnd, MSG_CLOSE, 0, 0); //发送关闭窗口消息
}
break;
case MSG_PAINT: //绘图窗口
{
HDC hdc;
char buffer[50];
int i;
hdc = BeginPaint (hWnd);
SetBkColor(hdc,COLOR_lightgray); //设置窗口背景色
TextOut(hdc, 130, 15, "Heroes"); //输出字符串
TextOut(hdc, 15, 45, "SMALL" );
TextOut(hdc, 15, 75, "MIDDLE" );
TextOut(hdc, 15, 105, "LARGE" ); /*输出三个模式的最高记录*/
for (i = 0; i < 3; i++){
sprintf(buffer, "%3d %s",
score[i].highscore, score[i].name);
TextOut(hdc, 150, 45+i*30, buffer); //输出字符串数组
}
EndPaint (hWnd, hdc);
}
return 0;
case MSG_CLOSE:
DestroyWindow (hRESET); //销毁RESET窗口
DestroyWindow (hOK); //销毁OK窗口
DestroyMainWindow (hWnd); //销毁主窗口
hHighscore = HWND_DESKTOP;
return 0;
}
return DefaultMainWinProc(hWnd, message, wParam, lParam); //默认的主窗口过程函数
}
/***********************************************************名 称:InitHighScoreCreateInfo()*功 能:建立"High Score" 的主窗口*入口参数:hHosting 当前窗口的句柄* pCreateInfo 主窗口*出口参数: 返回0**********************************************************/
void InitHighScoreCreateInfo (HWND hHosting, PMAINWINCREATE pCreateInfo)
{
pCreateInfo->dwStyle = WS_BORDER | WS_CAPTION; //窗口风格设置
pCreateInfo->dwExStyle = WS_EX_NONE; //不使用窗口扩展风格
pCreateInfo->spCaption = "High Score" ; //窗口标题
pCreateInfo->hMenu = 0; //无下拉式菜单
pCreateInfo->hCursor = GetSystemCursor(0); //设置窗口光标
pCreateInfo->hIcon = 0; //窗口无图标
pCreateInfo->MainWindowProc = HighScoreWinProc; //窗口过程函数
pCreateInfo->lx = 100; //窗口位置,大小
pCreateInfo->ty = 200;
pCreateInfo->rx = 470;
pCreateInfo->by = 410;
pCreateInfo->iBkColor = COLOR_lightgray; //窗口背景色
pCreateInfo->dwAddData = 0; //无附加数据
pCreateInfo->hHosting = hHosting; //托管窗口句柄
}
/************************* Congratulation Window *****************************/
/***********************************************************名 称:CongratulationWinProc()*功 能:绘制"Congratulation" 窗口内容*入口参数:hWnd 当前窗口(即接收信息的窗口)的句柄* message 接收到的消息标识* wParam 消息参数1* lParam 消息参数2*出口参数: 返回0**********************************************************/
#define IDC_CTRL_NAME 100
int CongratulationWinProc (HWND hWnd, int message, WPARAM wParam, LPARAM lParam)
{
static HWND hPrompt, hName, hOK; //三个窗口句柄
switch (message) {
case MSG_CREATE:
hPrompt = CreateWindow ("static",
"Please input your name:",
SS_SIMPLE | WS_VISIBLE,
IDC_STATIC,
10, 10, 185, 24, hWnd, 0); //创建一个静态窗口
hName = CreateWindow ("edit",
getlogin(),
WS_CHILD | WS_VISIBLE | WS_BORDER,
IDC_CTRL_NAME,
10, 40, 175, 26, hWnd, 0); //创建一个输入姓名窗口
hOK = CreateWindow ("button",
"Ok",
WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE,
IDOK,
110, 75, 75, 26, hWnd, 0); //创建一个确定窗口
break;
case MSG_COMMAND:
{
int id = LOWORD(wParam); //取得控件ID
FILE* pHighscore;
int i;
/*取得控件ID为OK,取得通知码消息是用户单击此按钮*/
if (id == IDOK && HIWORD(wParam) == BN_CLICKED) {
score[flag_size].highscore = second; //分数存入记录结构体的分数中 /*姓名的消息发送到记录结构体的姓名中,MSG_GETTEXT取得文本内容消息 * 19 为允许接收的最大字符个数,*/
SendMessage (hName, MSG_GETTEXT,
19, (LPARAM)score[flag_size].name); /*如果写形式打开记录文件,记录最高分*/
if ((pHighscore = fopen(get_record_file(), "w+"))){
for (i = 0; i < 3; i++)
fprintf(pHighscore, "%d, %s\n",
score[i].highscore,score[i].name);
fclose(pHighscore);
}
PostMessage (hWnd, MSG_CLOSE, 0, 0);
}
}
break;
case MSG_CLOSE:
DestroyWindow (hPrompt); //销毁窗口
DestroyWindow (hName);
DestroyWindow (hOK);
DestroyMainWindow (hWnd);
hCongratuate = HWND_DESKTOP;
return 0;
}
return DefaultMainWinProc(hWnd, message, wParam, lParam); //默认的主窗口过程函数
}
/***********************************************************名 称:InitCongratulationCreateInfo()*功 能:建立"Congratulation" 的主窗口*入口参数:hHosting 当前窗口的句柄* pCreateInfo 主窗口*出口参数: 返回0**********************************************************/
void InitCongratulationCreateInfo (HWND hHosting, PMAINWINCREATE pCreateInfo)
{
pCreateInfo->dwStyle = WS_BORDER | WS_CAPTION | WS_VISIBLE; //窗口风格设置
pCreateInfo->dwExStyle = WS_EX_IMECOMPOSE; //使用窗口扩展风格
pCreateInfo->spCaption = "Congratulation" ; //窗口标题
pCreateInfo->hMenu = 0; //无下拉式菜单
pCreateInfo->hCursor = GetSystemCursor(0); //设置窗口光标
pCreateInfo->hIcon = 0; //窗口无图标
pCreateInfo->MainWindowProc = CongratulationWinProc;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -