69,373
社区成员
发帖
与我相关
我的任务
分享
case WM_LBUTTONDOWN:
px=(LOWORD(lParam)-115)/30+1;
py=(HIWORD(lParam)-115)/30+1;
if(px<=15&&py<=15&&f&&qizi[px][py]==0)
{
qizi[px][py]=1;
f=!f;
InvalidateRect(hwnd,NULL,FALSE);
}
else
MessageBeep(0);
return 0;
我知道你什么原因了,之前代码没细看,你代码中if(px<=15&&py<=15&&f&&qizi[px][py]==0) 这句第二次一直是是FALSE,导致即使点击了左键,也不会运行qizi[px][py]=1;这一句LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
static BOOL f=TRUE;
int x,px,py,y,i,j;
static int qizi[15][15];
RECT rect;
switch(message) {
case WM_CREATE:
for(i=0;i<15;i++)
for(j=0;j<15;j++)
qizi[i][j]=0;
return 0;
case WM_LBUTTONDOWN:
px=(LOWORD(lParam)-115)/30+1;
py=(HIWORD(lParam)-115)/30+1;
if(px<=15&&py<=15&&f&&qizi[px][py]==0) {
qizi[px][py]=1;
f=!f;
InvalidateRect(hwnd,NULL,FALSE);
} else
MessageBeep(0);
return 0;
case WM_RBUTTONDOWN:
px=(LOWORD(lParam)-115)/30+1;
py=(HIWORD(lParam)-115)/30+1;
if(px<=15&&py<=15&&!f&&qizi[px][py]==0) {
qizi[px][py]=2;
f=!f;
InvalidateRect(hwnd,NULL,FALSE);
} else
MessageBeep(0);
return 0;
case WM_PAINT:
HDC hdc;
PAINTSTRUCT ps;
hdc=BeginPaint(hwnd,&ps);
HBRUSH hobrush,hbrush1,hbrush2;
hbrush1=CreateSolidBrush(RGB(0,0,0));
hbrush2=CreateSolidBrush(RGB(255,255,255));
for(x=0;x<15;x++) {
MoveToEx(hdc,100+30*x,100,NULL);
LineTo(hdc,100+30*x,520);
MoveToEx(hdc,100,100+30*x,NULL);
LineTo(hdc,520,100+30*x);
}
hobrush=SelectObject(hdc,hbrush1);
for(x=0;x<15;x++)
for(y=0;y<15;y++) {
if(qizi[x][y]==1) {
SelectObject(hdc,hbrush1);
Ellipse(hdc,(100+30*x)-sr,(100+30*y)-sr,(100+30*x)+sr,(100+30*y)+sr);
} else if(qizi[x][y]==2) {
SelectObject(hdc,hbrush2);
Ellipse(hdc,(100+30*x)-sr,(100+30*y)-sr,(100+30*x)+sr,(100+30*y)+sr);
}
}
SelectObject(hdc,hobrush);
DeleteObject(hbrush2);
DeleteObject(hbrush1);
EndPaint(hwnd,&ps);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd,message,wParam,lParam);
}