我这段程序,在(VS2005)运行后,只能同时显示空白路径,怎么才能依次显示啊。GG帮帮忙啊
#include <windows.h>
#include <stdio.h>
#define ID_TIMER     1
using namespace std;char buffer[80]; 
int a[6][6]={{0,0,1,1,1}, //0是路,1是障碍物  
 {1,0,0,0,1},   
 {0,1,0,1,1},   
 {0,0,0,0,1},   
 {1,1,1,0,0}};  void drawmap(HWND hwnd,HDC hdc)
{
RECT rect;
GetClientRect(hwnd, &rect); for(int j=0;j<=5;++j)
{
MoveToEx(hdc,100*j,0,NULL);
LineTo(hdc,100*j,500);
}
for(int j=0;j<=5;++j)
{
MoveToEx(hdc,0,100*j,NULL);
LineTo(hdc,500,100*j);
} RECT rct;
HBRUSH hbrush = CreateSolidBrush(RGB(0,0,0));

for (int i=0;i<5;++i)
{
for(int j=0;j<5;++j)
{
if(a[i][j] == 1)
{
rct.left = 100*j;
rct.top = 100*i;
rct.right = 100*(j+1);
rct.bottom = 100*(i+1);
FillRect(hdc,&rct,hbrush);
}
}
}
DeleteObject(hbrush);
}VOID CALLBACK TimerProc(HWND, UINT, UINT, DWORD);
LRESULT CALLBACK WinSunProc(HWND hwnd,UINT uMsg, WPARAM wParam,LPARAM lParam);//申明函数
HWND hwnd;
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine,int nCmdShow )          

WNDCLASS wndcls;//窗口类实例化
wndcls.cbClsExtra=0;//类的附加信息即追加的内存空间
wndcls.cbWndExtra=0;//窗口的附加信息
wndcls.hbrBackground=(HBRUSH)GetStockObject(LTGRAY_BRUSH);//背景画刷句柄
wndcls.hCursor=LoadCursor(NULL,IDC_CROSS);//光标句柄
wndcls.hIcon=(HICON)LoadImage(hInstance,"game.ico",IMAGE_ICON,0,0,LR_LOADFROMFILE);//窗口标题栏图标
wndcls.hInstance=hInstance;//窗口类的实例句柄:用来表示该窗口属于哪个程序实例
wndcls.lpfnWndProc=WinSunProc;//函数指针:用来接收窗口的消息处理函数,跟消息过程函数必须同名
wndcls.lpszClassName="Jerry2007";//窗口类名
wndcls.lpszMenuName=NULL;//菜单名
wndcls.style=CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;//窗口样式水平重画或垂直重画

if(!RegisterClass(&wndcls))
{
MessageBox(NULL,TEXT("This is error!"),"Jerry2007",MB_ICONWARNING);
return 0;
} hwnd=CreateWindow("Jerry2007","晨风之安魂曲",WS_OVERLAPPEDWINDOW,0,0,510,535,NULL,NULL,hInstance,NULL);

if(!hwnd)
return false; ShowWindow(hwnd,SW_SHOWNORMAL);
UpdateWindow(hwnd); MSG msg;//消息实例 while(GetMessage(&msg, NULL, 0, 0))
     {
          TranslateMessage(&msg) ;
          DispatchMessage(&msg) ;
     }
     return msg.wParam ;
}LRESULT CALLBACK WinSunProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
switch(uMsg)
{
case WM_CREATE:
SetTimer(hwnd,ID_TIMER,1000,TimerProc);
break; case WM_COMMAND: break;
case WM_TIMER:
break;
        
    case WM_LBUTTONDOWN:     
break;
case WM_PAINT:
HDC hdc;
PAINTSTRUCT ps;
hdc = BeginPaint(hwnd,&ps);  
drawmap(hwnd, hdc);
EndPaint(hwnd,&ps); break;
case WM_CLOSE:
if(IDYES==MessageBox(hwnd,"是否真的结束?","Jerry",MB_YESNO))
{   
DestroyWindow(hwnd); 
}   
break;   
case  WM_DESTROY:
KillTimer(hwnd, ID_TIMER);
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
return 0;
}
VOID CALLBACK TimerProc(HWND hwnd, UINT message, UINT iTimerID, DWORD dwTime)
{
     static BOOL fFlipFlop = FALSE;
     HBRUSH  hBrush;
     HDC  hdc;
     RECT  rc;
     
     MessageBeep(MB_ICONEXCLAMATION);
     fFlipFlop = !fFlipFlop;
     
     GetClientRect(hwnd, &rc);
     
     hdc = GetDC(hwnd);
     hBrush = CreateSolidBrush(fFlipFlop ? RGB(255,0,0) : RGB(0,0,255));
 int i=0,j=0;int count=0;
 for(i=0;i<5;++i)
 {
 for(j=0;j<5;++j)
 {
if(a[i][j] == 0)
{
rc.left = 100*j;
rc.top = 100*i;
rc.right = 100*(j+1);
rc.bottom = 100*(i+1);
FillRect(hdc,&rc,hBrush);
}
 }
 }
     ReleaseDC(hwnd, hdc);
     DeleteObject(hBrush);
}

解决方案 »

  1.   

    最后面这个
    for(i=0;i <5;++i) 
      { 
      for(j=0;j <5;++j) 
      { 
    if(a[i][j]   ==   0) 

    rc.left   =   100*j; 
    rc.top   =   100*i; 
    rc.right   =   100*(j+1); 
    rc.bottom   =   100*(i+1); 
    FillRect(hdc,&rc,hBrush); 

      } 
      } 
    循环中添加延时函数,Delay(200)//*************************
    //延时
    void Delay(long time)
    {
    static long old_clock, new_clock; //延时变量
    new_clock=old_clock=timeGetTime(); MSG msg;
    while( new_clock < old_clock + time )
    {
    if(PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE))
    {
                if (!GetMessage(&msg, NULL, 0, 0)) return;
                TranslateMessage(&msg);
                DispatchMessage(&msg);
    }
    else if(bActive)
    {
    new_clock=timeGetTime();
    if( GetAsyncKeyState(VK_F4) ) //F4结束
    {
    return;
    }
    }
    else WaitMessage(); //等待消息
    }
    }
    这段代码来自金点的《圣2》