16,372
社区成员




void CBomberManOnlineView::OnPaint()
{
CDC *pDC = GetDC();
GetClientRect(&client_rect);
cacheDC.CreateCompatibleDC(NULL);
cache_bitmap.CreateCompatibleBitmap(pDC, client_rect.Width(), client_rect.Height());
cacheDC.SelectObject(&cache_bitmap);
// TODO: 在此处添加消息处理程序代码
if(game_state == LOBBY)
{
LobbyRender(&cacheDC);
}
else if(game_state == INGAME)
{
p_game->Render(&cacheDC);
}
pDC->BitBlt(0, 0, client_rect.Width(), client_rect.Height(), &cacheDC,0,0,SRCCOPY);
ValidateRect(client_rect);
cache_bitmap.DeleteObject();
cacheDC.DeleteDC();
// 不要为绘制消息而调用 CWnd::OnPaint()
}
void CBomberManOnlineView::OnTimer(UINT_PTR nIDEvent)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
if(nIDEvent == TIMER_RENDER)
{
OnPaint();
if(game_state == INGAME)
{
now_time = timeGetTime();
p_game->Update(now_time - last_time);
}
}
last_time = timeGetTime();
CWnd::OnTimer(nIDEvent);
}
void CBomberManOnlineView::OnPaint()
{
PAINTSTRUCT wndps = {0};
::BeginPaint(m_hWnd,&wndps);
HDC hDC = CreateCompatibleDC(wndps.hdc);
GetClientRect(&client_rect);
HBITMAP bmpCompatible = CreateCompatibleBitmap(wndps.hdc,client_rect.Width(), client_rect.Height());
HGDIOBJ oldCompatible = SelectObject(hDC,bmpCompatible);
SetBkMode(hDC,TRANSPARENT);
if(game_state == LOBBY)
{
LobbyRender(&cacheDC);
}
else if(game_state == INGAME)
{
p_game->Render(&cacheDC);
}
::BitBlt(wndps.hdc,0,0,client_rect.Width(), client_rect.Height(),hDC,0,0,SRCCOPY);
ValidateRect(client_rect);
SelectObject(hDC,oldCompatible);
DeleteObject(bmpCompatible);
DeleteDC(hDC);
::EndPaint(m_hWnd,&wndps);
}
void CBomberManOnlineView::OnTimer(UINT_PTR nIDEvent)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
if(nIDEvent == TIMER_RENDER)
{
::PostMessage(m_hWnd,WM_PAINT,0,0); //Invalidate(FALSE);
if(game_state == INGAME)
{
now_time = timeGetTime();
p_game->Update(now_time - last_time);
}
}
last_time = timeGetTime();
CWnd::OnTimer(nIDEvent);
}