BOOL FoodCreate()
{
static int j,i;
RECT Rect;
if(Food==FALSE)
{j=rand()%20;
i=rand()%20;}
Rect.left=j*30;
Rect.top=i*30;
Rect.right=(j+1)*30;
Rect.bottom=(i+1)*30;
HDC hdc;
PAINTSTRUCT ps; //定义指向包含绘图信息的结构体变量
HBRUSH hBrush; //定义指向画刷的句柄
HPEN hPen; //定义指向画笔的句柄
hdc=BeginPaint(hWndMain,&ps); //开始绘图
hPen=(HPEN)GetStockObject(NULL_PEN); //获取系统定义的空画笔
SelectObject(hdc,hPen);
hBrush=CreateSolidBrush(RGB(255,0,0)); //创建画刷
SelectObject(hdc,hBrush); //选择画刷
Rectangle(hdc,j*30,i*30,(j+1)*30,(i+1)*30);
DeleteObject(hBrush); //删除画刷
DeleteObject(hPen); //删除画笔
EndPaint(hWndMain,&ps); //结束绘图
Food=TRUE;
InvalidateRect(hWndMain,NULL,TRUE);
// PostMessage(hWndMain,WM_PAINT,NULL,NULL);
return 0;
}
Rectangle(hdc,0,0,30,30);//如果这句画出来了
Rectangle(hdc,j*30,i*30,(j+1)*30,(i+1)*30);//这句没画出来,检查一下坐标,是否画到窗口外面了。
你应该弄到 WM_PAINT 里面去绘制,在 FoodCreate 里面绘制的话,你一调用 InvalidateRect, 系统就会调用 WM_PAINT, 然后你在这儿绘制的东西自然就没了!