2012-08-06 39 views
0

这是一个普通的窗口我目前的游戏循环后崩溃:游戏循环/不刷新,一会儿

while(running) 
{ 
    while(PeekMessage(&msg, 0, 0, 0, PM_REMOVE)) 
    { 
     if(msg.message == WM_QUIT) 
     { 
      running = false; 
     } 

     TranslateMessage(&msg); 
     DrawGame(&game); 
     DispatchMessage(&msg); 
    } 

    UpdateGame(&game); 
    InvalidateRect(hwnd, NULL, 1); 
    //Sleep(100); 
} 

...但我实际上应该把DrawGame翻译和DispatchMessage函数之间?如果我将DrawGame放在UpdateGame的上面/下面,就不会画任何东西。

而过了一段时间,如果我画一个简单的矩形,他们开始重叠海誓山盟。它运行良好约一分钟,绘制一个矩形的网格(由于:window size that you set isn't the correct size of the window。位置不合适,并在一段时间后,它绘制另一个网格,有时它完全拧紧,窗口似乎崩溃了,我必须按“停止”按钮在Visual Studio。

那么,究竟在那里我把一个游戏循环,我如何知道什么时候绘制的游戏吗?我需要primarly绘制矩形,虽然不工作那么好无论是。

回答

1

处理一个WM_PAINT消息时,你应该调用DrawGame()从你的Windows消息回调。

在消息循环中,您应该只获取并将Windows消息分派给相应的回调。

此外,这也是更新游戏世界的地方,但不适用于进行绘制调用。