📄 mouse.cpp
字号:
#include "stdafx.h"
#include "resource.h"
#include "stdlib.h"
#include "time.h"
#include "stdio.h"
#include "mmsystem.h"
#include "shellapi.h"
#pragma comment(lib,"winmm.lib")
#define EACHNUM 20
BOOL flag;
int bmpposX[16];
int bmpposY[16];
HINSTANCE hInst;
static int only;
static UINT dead,grade,lost;
static BOOL blost,begin;
UINT raflag;
HWND hwnd;
static BOOL paush;
void initgame(HWND hw,UINT ra,HMENU hmenu);
BOOL APIENTRY ABOUT(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam);
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
void BeginCreate(UINT de,UINT gr);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int iCmdShow)
{
MSG msg;
HWND hwn;
static TCHAR szAppName[]="MOUSE";
WNDCLASS wndclass;
wndclass.style =CS_HREDRAW|CS_VREDRAW;
wndclass.lpfnWndProc =WndProc;
wndclass.cbClsExtra =0;
wndclass.cbWndExtra =DLGWINDOWEXTRA;
wndclass.hInstance =hInstance;
wndclass.hIcon =LoadIcon(hInstance,szAppName);
wndclass.hCursor =LoadCursor(NULL,IDC_ARROW);
wndclass.hbrBackground =(HBRUSH)(COLOR_BTNFACE+1);
wndclass.lpszMenuName =MAKEINTRESOURCE(IDR_MENU1);
wndclass.lpszClassName =szAppName;
if(!RegisterClass(&wndclass))
{
MessageBox(NULL,"This programe can't requite in Windows NT\n",szAppName,MB_OK|MB_ICONERROR);
}
hInst=hInstance;
hwn=CreateDialog(hInstance,szAppName,NULL,NULL);
if(hwn==NULL)
{
MessageBox(NULL,"Create window fail!","fail",MB_OK);
return 0;
}
hwnd=hwn;
ShowWindow(hwnd,iCmdShow);
BeginCreate(0,1);
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
LRESULT CALLBACK WndProc(HWND hwnd,UINT msg,WPARAM wparam,LPARAM lparam)
{
int x,y,cx,cy;
RECT rs;
RECT rsbmp;
HDC hdc;
HBRUSH brush,oldbrush;
int i,j;
int k;
UINT pos;
LOGPEN pen;
HPEN hpen,oldhpen;
POINT point;
POINT cursorpoint;
UINT temp;
static UINT timnum;
static BOOL timeflag;
static HMENU hmenu;
static UINT level=IDC_ONE;
switch(msg)
{
case WM_PAINT:
PAINTSTRUCT ps;
hdc=BeginPaint(hwnd,&ps);
GetClientRect(hwnd,&rs);
pen.lopnColor=RGB(0,0,0);
pen.lopnStyle=PS_DOT;
point.x=3;
pen.lopnWidth=point;
hpen=CreatePenIndirect(&pen);
if(!hpen)
{
MessageBox(hwnd,"Create pen fail","fail",MB_OK);
return false;
}
oldhpen=(HPEN)SelectObject(hdc,hpen);
brush=(HBRUSH)GetStockObject(WHITE_BRUSH);
oldbrush=(HBRUSH)SelectObject(hdc,brush);
FillRect(hdc,&rs,brush);
for(j=0;j<400;j=j+80)
{
MoveToEx(hdc,0,j,NULL);
LineTo(hdc,320,j);
}
for(j=0;j<400;j=j+80)
{
MoveToEx(hdc,j,0,NULL);
LineTo(hdc,j,320);
}
SelectObject(hdc,oldbrush);
SelectObject(hdc,oldhpen);
EndPaint(hwnd,&ps);
break;
case WM_CREATE:
hmenu=GetMenu(hwnd);
x=GetSystemMetrics(SM_CXSCREEN);
y=GetSystemMetrics(SM_CYSCREEN);
GetWindowRect(hwnd,&rs);
cx=(x-(rs.right-rs.left))/2;
cy=(y-(rs.bottom-rs.top))/2;
SetWindowPos(hwnd,NULL,cx,cy,rs.right-rs.left,360,SWP_DRAWFRAME);
srand((unsigned)time(NULL));
k=0;
for(i=0;i<=240;i=i+80)
{
for(j=0;j<=240;j=j+80)
{
bmpposX[k]=j;
bmpposY[k]=i;
k++;
}
}
timeflag=false;
timnum=0;
paush=true;
break;
return 0;
case WM_TIMER:
switch(LOWORD(wparam))
{
case 1:
pos=(16*rand())/RAND_MAX;
initgame(hwnd,pos,hmenu);
break;
case 2:
if(!timeflag)
{
ShowWindow(GetDlgItem(hwnd,IDC_READY),SW_SHOW);
PlaySound((LPCTSTR)IDR_WAVE1,GetModuleHandle(NULL),SND_ASYNC|SND_RESOURCE);
timeflag=true;
}
else
{
ShowWindow(GetDlgItem(hwnd,IDC_READY),SW_HIDE);
timeflag=false;
}
timnum++;
if(timnum==6)
{
KillTimer(hwnd,2);
timnum=0;
timeflag=false;
if(begin||only==7)
{
switch(grade)
{
case 1:
temp=2000;
break;
case 2:
temp=1500;
break;
case 3:
temp=1000;
break;
case 4:
temp=500;
break;
case 5:
temp=400;
break;
case 6:
temp=300;
break;
default:
temp=300;
}
SetTimer(hwnd,1,temp,NULL);
}
}
break;
}
break;
case WM_LBUTTONUP:
if(begin)
{
SetCursor(LoadCursor(hInst,MAKEINTRESOURCE(IDC_CURSOR1)));
GetCursorPos(&cursorpoint);
ScreenToClient(hwnd,&cursorpoint);
rsbmp.left=bmpposX[raflag]+12;
rsbmp.right=bmpposX[raflag]+80-37;
rsbmp.top=bmpposY[raflag]+7;
rsbmp.bottom=bmpposY[raflag]+80-37;
SetDlgItemInt(hwnd,IDC_TEST2,cursorpoint.x,FALSE);
SetDlgItemInt(hwnd,IDC_TEST3,cursorpoint.y,FALSE);
if(PtInRect(&rsbmp,cursorpoint))
{
blost=true;
dead++;
SetDlgItemInt(hwnd,IDC_DEAD,dead,FALSE);
SetDlgItemInt(hwnd,IDC_NUM,dead*10,FALSE);
flag=true;
initgame(hwnd,raflag,hmenu);
begin=false;
}
}
return 0;
break;
case WM_LBUTTONDOWN:
SetCursor(LoadCursor(hInst,MAKEINTRESOURCE(IDC_CURSOR2)));
return 0;
break;
case WM_MOUSEMOVE:
SetCursor(LoadCursor(hInst,MAKEINTRESOURCE(IDC_CURSOR1)));
return 0;
break;
case WM_COMMAND:
switch(LOWORD(wparam))
{
case IDC_ONE:
case IDC_TWO:
case IDC_THREE:
case IDC_FOUR:
case IDC_FIVE:
case IDC_SIX:
CheckMenuItem(hmenu,level,MF_UNCHECKED);
level=LOWORD(wparam);
grade=level-40006;
SetDlgItemInt(hwnd,IDC_GRADE,grade,FALSE);
CheckMenuItem(hmenu,level,MF_CHECKED);
break;
case IDC_BEGINGAME:
case IDC_BUTTON1:
EnableMenuItem(hmenu,IDC_PAUSHGAME,MF_ENABLED);
EnableMenuItem(hmenu,IDC_CLOSEGAME,MF_ENABLED);
EnableMenuItem(hmenu,IDC_BEGINGAME,MF_GRAYED);
EnableMenuItem(hmenu,IDC_ONE,MF_GRAYED);
EnableMenuItem(hmenu,IDC_TWO,MF_GRAYED);
EnableMenuItem(hmenu,IDC_THREE,MF_GRAYED);
EnableMenuItem(hmenu,IDC_FOUR,MF_GRAYED);
EnableMenuItem(hmenu,IDC_FIVE,MF_GRAYED);
EnableMenuItem(hmenu,IDC_SIX,MF_GRAYED);
EnableMenuItem(hmenu,IDC_PAI,MF_GRAYED);
SetTimer(hwnd,2,400,NULL);
pos=(16*rand())/RAND_MAX;
BeginCreate(0,grade);
EnableWindow(GetDlgItem(hwnd,IDC_BUTTON1),FALSE);
EnableWindow(GetDlgItem(hwnd,IDC_BUTTON2),TRUE);
EnableWindow(GetDlgItem(hwnd,IDC_BUTTON3),TRUE);
begin=true;
return 0;
break;
case IDC_CLOSEGAME:
case IDC_BUTTON2:
ModifyMenu(hmenu,IDC_COON,NULL,IDC_PAUSHGAME,"暂停游戏 F3");
EnableMenuItem(hmenu,IDC_PAUSHGAME,MF_GRAYED);
EnableMenuItem(hmenu,IDC_CLOSEGAME,MF_GRAYED);
EnableMenuItem(hmenu,IDC_BEGINGAME,MF_ENABLED);
EnableMenuItem(hmenu,IDC_ONE,MF_ENABLED);
EnableMenuItem(hmenu,IDC_TWO,MF_ENABLED);
EnableMenuItem(hmenu,IDC_THREE,MF_ENABLED);
EnableMenuItem(hmenu,IDC_FOUR,MF_ENABLED);
EnableMenuItem(hmenu,IDC_FIVE,MF_ENABLED);
EnableMenuItem(hmenu,IDC_SIX,MF_ENABLED);
EnableMenuItem(hmenu,IDC_PAI,MF_ENABLED);
SetWindowText(GetDlgItem(hwnd,IDC_BUTTON3),"暂停");
paush=true;
begin=false;
KillTimer(hwnd,1);
BeginCreate(0,1);
return 0;
break;
case IDC_PAI:
MessageBox(hwnd,"演示版无此功能,呵。。。","正在加紧制作",MB_OK);
return 0;
break;
case IDC_ABOUT:
if(paush)
SendMessage(hwnd,WM_COMMAND,(WPARAM)IDC_BUTTON3,0);
DialogBox(hInst,MAKEINTRESOURCE(IDD_DIALOG1),hwnd,(DLGPROC)ABOUT);
return 0;
break;
case IDC_EXITGAME:
KillTimer(hwnd,1);
PostQuitMessage(0);
return 0;
break;
case IDC_PAUSHGAME:
case IDC_COON:
case IDC_BUTTON3:
if(paush)
{
ModifyMenu(hmenu,IDC_PAUSHGAME,NULL,IDC_COON,"继续游戏 F3");
KillTimer(hwnd,1);
SetWindowText(GetDlgItem(hwnd,IDC_BUTTON3),"继续");
paush=false;
begin=false;
}
else
{
switch(grade)
{
case 1:
temp=2000;
break;
case 2:
temp=1500;
break;
case 3:
temp=1000;
break;
case 4:
temp=500;
break;
case 5:
temp=400;
break;
case 6:
temp=300;
break;
default:
temp=300;
}
ModifyMenu(hmenu,IDC_COON,NULL,IDC_PAUSHGAME,"暂停游戏 F3");
SetTimer(hwnd,1,temp,NULL);
SetWindowText(GetDlgItem(hwnd,IDC_BUTTON3),"暂停");
paush=true;
begin=true;
}
return 0;
break;
}
break;
case WM_DESTROY:
KillTimer(hwnd,1);
PostQuitMessage(0);
return 0;
break;
}
return DefWindowProc(hwnd,msg,wparam,lparam);
}
void initgame(HWND hw,UINT ra,HMENU hmenu)
{
HBRUSH br,oldbr;
HDC hdc,hdcbmp;
HBITMAP hbmp,holdbmp;
RECT rc;
char str[MAX_PATH];
char filename[MAX_PATH];
hdc=GetDC(hw);
SetDlgItemInt(hw,IDC_TEST,raflag,TRUE);
br=(HBRUSH)GetStockObject(WHITE_BRUSH);
oldbr=(HBRUSH)SelectObject(hdc,br);
rc.left=bmpposX[raflag]+3;
rc.right=bmpposX[raflag]+80-3;
rc.top=bmpposY[raflag]+3;
rc.bottom=bmpposY[raflag]+80-3;
FillRect(hdc,&rc,br);
SelectObject(hdc,oldbr);
if(!flag)
{
only--;
if(only<0)
{
if(lost<5)
{
KillTimer(hw,1);
grade++;
BeginCreate(dead,grade);
sprintf(str,"第%d局 准备。。。",grade);
SetWindowText(GetDlgItem(hw,IDC_READY),str);
SetTimer(hw,2,400,NULL);
EnableWindow(GetDlgItem(hwnd,IDC_BUTTON1),FALSE);
EnableWindow(GetDlgItem(hwnd,IDC_BUTTON2),TRUE);
EnableWindow(GetDlgItem(hwnd,IDC_BUTTON3),TRUE);
begin=true;
return;
}
else
{
KillTimer(hw,1);
strcpy(str,"游 戏 结 束");
SetWindowText(GetDlgItem(hw,IDC_READY),str);
ShowWindow(GetDlgItem(hw,IDC_READY),SW_SHOW);
begin=false;
EnableMenuItem(hmenu,IDC_PAUSHGAME,MF_GRAYED);
EnableMenuItem(hmenu,IDC_CLOSEGAME,MF_GRAYED);
EnableMenuItem(hmenu,IDC_BEGINGAME,MF_ENABLED);
EnableMenuItem(hmenu,IDC_ONE,MF_ENABLED);
EnableMenuItem(hmenu,IDC_TWO,MF_ENABLED);
EnableMenuItem(hmenu,IDC_THREE,MF_ENABLED);
EnableMenuItem(hmenu,IDC_FOUR,MF_ENABLED);
EnableMenuItem(hmenu,IDC_FIVE,MF_ENABLED);
EnableMenuItem(hmenu,IDC_SIX,MF_ENABLED);
EnableMenuItem(hmenu,IDC_PAI,MF_ENABLED);
EnableWindow(GetDlgItem(hwnd,IDC_BUTTON1),TRUE);
EnableWindow(GetDlgItem(hwnd,IDC_BUTTON2),FALSE);
EnableWindow(GetDlgItem(hwnd,IDC_BUTTON3),FALSE);
//GetCurrentDirectory(MAX_PATH,filename);
//strcat(filename,"\\chimes.wav");
//sndPlaySound(filename,SND_ASYNC);
PlaySound((LPCTSTR)IDR_WAVE2,GetModuleHandle(NULL),SND_ASYNC|SND_RESOURCE);
if(!blost)
{
lost++;
SetDlgItemInt(hw,IDC_LOST,lost,FALSE);
blost=false;
}
else
{
blost=false;
}
return;
}
}
else
{
SetDlgItemInt(hw,IDC_ONLY,only,FALSE);
}
if(!blost)
{
lost++;
SetDlgItemInt(hw,IDC_LOST,lost,FALSE);
blost=false;
}
else
{
blost=false;
}
GetCurrentDirectory(MAX_PATH,filename);
strcat(filename,"\\put.wav");
//sndPlaySound(filename,SND_ASYNC);
PlaySound("put",GetModuleHandle(NULL),SND_RESOURCE|SND_RESOURCE);
hdcbmp=CreateCompatibleDC(hdc);
hbmp=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP1));
holdbmp=(HBITMAP)SelectObject(hdcbmp,hbmp);
BitBlt(hdc,bmpposX[ra]+20,bmpposY[ra]+20,50,50,hdcbmp,0,0,SRCCOPY);
DeleteObject(SelectObject(hdcbmp,holdbmp));
DeleteObject(hdcbmp);
begin=true;
}
else
{
//GetCurrentDirectory(MAX_PATH,filename);
//strcat(filename,"\\send.wav");
//sndPlaySound(filename,SND_ASYNC);
PlaySound((LPCTSTR)IDR_WAVE3,GetModuleHandle(NULL),SND_ASYNC|SND_RESOURCE);
hdcbmp=CreateCompatibleDC(hdc);
hbmp=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP2));
holdbmp=(HBITMAP)SelectObject(hdcbmp,hbmp);
BitBlt(hdc,bmpposX[ra]+20,bmpposY[ra]+20,50,50,hdcbmp,0,0,SRCCOPY);
DeleteObject(SelectObject(hdcbmp,holdbmp));
DeleteObject(hdcbmp);
}
raflag=ra;
flag=false;
}
void BeginCreate(UINT de,UINT gr)
{
char temp[MAX_PATH];
sprintf(temp,"第%u局 准备。。。",gr);
flag=false;
only=EACHNUM;
lost=-1;
dead=de;
begin=false;
blost=false;
grade=gr;
EnableWindow(GetDlgItem(hwnd,IDC_BUTTON1),TRUE);
EnableWindow(GetDlgItem(hwnd,IDC_BUTTON2),FALSE);
EnableWindow(GetDlgItem(hwnd,IDC_BUTTON3),FALSE);
SetWindowText(GetDlgItem(hwnd,IDC_READY),temp);
SetDlgItemInt(hwnd,IDC_GRADE,grade,FALSE);
SetDlgItemInt(hwnd,IDC_NUM,de*10,FALSE);
SetDlgItemInt(hwnd,IDC_DEAD,dead,FALSE);
SetDlgItemInt(hwnd,IDC_LOST,lost+1,FALSE);
SetDlgItemInt(hwnd,IDC_ONLY,only,FALSE);
SetWindowText(GetDlgItem(hwnd,IDC_READY2),"当前级别:");
SetWindowText(GetDlgItem(hwnd,IDC_READY3),"当前总分:");
SetWindowText(GetDlgItem(hwnd,IDC_READY4),"打死:");
SetWindowText(GetDlgItem(hwnd,IDC_READY5),"走脱:");
SetWindowText(GetDlgItem(hwnd,IDC_READY6),"还剩:");
}
BOOL APIENTRY ABOUT(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam)
{
HDC hdc;
static RECT rect,rect1;
POINT point;
static HFONT font,oldfont;
static HBRUSH brush;
LOGBRUSH logbrush;
static BOOL flag;
switch(message)
{
case WM_PAINT:
PAINTSTRUCT ps;
hdc=BeginPaint(hDlg,&ps);
SetTextColor(hdc,RGB(0,0,0));
SetBkMode(hdc,TRANSPARENT);
TextOut(hdc,287,125,"jgr8224@sina.com",strlen("jgr8224@sina.com"));
EndPaint(hDlg,&ps);
return 0;
break;
case WM_INITDIALOG:
logbrush.lbColor=RGB(191,191,191);
brush=CreateBrushIndirect(&logbrush);
rect.top=125;
rect.left=287;
rect.right=403;
rect.bottom=135;
rect1=rect;
rect1.right+=20;
rect1.bottom+=10;
font=CreateFont(15,8,0,0,450,1,0,0,134,3,2,1,2,"黑体");
flag=true;
return 0;
break;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDOK:
EndDialog(hDlg,TRUE);
return true;
break;
}
break;
case WM_LBUTTONDOWN:
if(!flag)
{
ShellExecute(0,NULL,"mailto:jgr8224@sina.com","hello","hello",SW_NORMAL);
}
return 0;
break;
case WM_MOUSEMOVE:
point.x=LOWORD(lParam);
point.y=HIWORD(lParam);
if(PtInRect(&rect,point))
{
hdc=GetDC(hDlg);
SelectObject(hdc,brush);
FillRect(hdc,&rect1,brush);
SetTextColor(hdc,RGB(0,160,0));
SetBkMode(hdc,TRANSPARENT);
oldfont=(HFONT)SelectObject(hdc,font);
TextOut(hdc,287,125,"jgr8224@sina.com",strlen("jgr8224@sina.com"));
SelectObject(hdc,oldfont);
SetCursor(LoadCursor(hInst,MAKEINTRESOURCE(IDC_CURSOR3)));
flag=false;
ReleaseDC(hDlg,hdc);
}
else
{
if(!flag)
{
hdc=GetDC(hDlg);
SelectObject(hdc,brush);
FillRect(hdc,&rect1,brush);
SetTextColor(hdc,RGB(0,0,0));
SetBkMode(hdc,TRANSPARENT);
TextOut(hdc,287,125,"jgr8224@sina.com",strlen("jgr8224@sina.com"));
flag=true;
ReleaseDC(hDlg,hdc);
}
}
return 0;
break;
case WM_CLOSE:
EndDialog(hDlg,true);
return true;
break;
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -