//改变窗口大小时会触发,由于我们设置了窗口类的style为CS_HREDRAW|CS_VREDRAW,所以当改变大小后,也会触发重绘WM_PAINT case WM_SIZE: //重新计算小格子的大小 cxBlock=LOWORD(lParam)/DIVISIONS; cyBlock=HIWORD(lParam)/DIVISIONS; return 0; //点击左键时触发 case WM_LBUTTONDOWN: //获取x,y. x=LOWORD(lParam)/cxBlock; y=HIWORD(lParam)/cyBlock; if(x<DIVISIONS && y<DIVISIONS) { //改变点中的格子标志(^为异或运算,两次异或就还原) fState[x][y]^=1; rect.left=x*cxBlock; rect.top=y*cyBlock; rect.right=(x+1)*cxBlock; rect.bottom=(y+1)*cyBlock; //重绘(触发WM_PAINT)选中的格子 InvalidateRect(hwnd,&rect,FALSE); } else MessageBeep(0); return 0;
上面的代码是CHEDKER1中的部分代码,我认为可以学习的地方都加入了注释,今天晚上一直在做ACM的题目,CHEDKER2跟CHEDKER3中代码还未加入注释。
我认为这个程序可以改为五子棋的小软件。