LRESULT WindowMonitor::HandleMessage(UINT message, WPARAM wParam, LPARAM) { switch (message) { case LM_REDRAW: UpdateWindowData((HWND)wParam); return 0; case LM_WINDOWCREATED: UpdateWindowData((HWND)wParam); return 0; case LM_WINDOWDESTROYED: sWindowData.erase((HWND)wParam); return 0; case LM_WINDOWREPLACED: UpdateWindowData((HWND)wParam); return 0; case LM_WINDOWREPLACING: sWindowData.erase((HWND)wParam); return 0; default: assert(false); // We should handle every message sent to us. return 0; } }
void Camera::Update(void) { UpdateWindowData(GAME->WindowWidth,GAME->WindowHeight); Matrix::CreatePerspective(Math::PiOver4,((float)(windowx)) / windowy, 1.0f, 40000.f, &PerspectiveMat); UpdateOrient(); UpdatePosition(); }
EXPORT_CDECL(HICON) GetWindowIcon(HWND window, UINT32 size) { WindowMap::iterator iter = sWindowData.find(window); if (iter == sWindowData.end()) { if (IsTaskbarWindow(window)) { UpdateWindowData(window); } return nullptr; } if (size > 20 && iter->second.largeIcon != nullptr) { return iter->second.largeIcon; } return iter->second.smallIcon; }
void WindowMonitor::RunWindowMaintenance() { for (WindowMap::iterator iter = sWindowData.begin(); iter != sWindowData.end();) { if (!IsTaskbarWindow(iter->first)) { iter = sWindowData.erase(iter); continue; } if (iter->second.updateDuringMaintenance) { iter->second.updateDuringMaintenance = false; UpdateWindowData(iter->first); } ++iter; } }