VOID CUIWindowItem::Show(BOOL bShow) { if(bShow == m_bShow || !m_pWindow) return; //显示 if(bShow) { g_pSoundSystem->PlayUISoundDirect( m_nIDOpenWindow ); m_pWindow->show(); //如果看不见,那么自动归位 if( !m_pWindow->isCanVisible() ) { OnSizeChange(); } m_pWindow->activate(); } else { g_pSoundSystem->PlayUISoundDirect( m_nIDCloseWindow ); m_pWindow->hide(); //响应窗口关闭时一些附加处理 onWindowHidden(); } //防止屏幕闪烁 CUIWindowMng::GetClientScreen()->requestRedraw(); m_bShow = bShow; // 禅让窗口,无论显示还是关闭窗口,都需要进行禅让窗口更新 }
VOID CUIWindowItem::Show(BOOL bShow) { if(bShow == m_bShow) return; //显示 if(bShow) { m_pWindow->show(); m_pWindow->activate(); } else { m_pWindow->hide(); //响应窗口关闭时一些附加处理 onWindowHidden(); } //防止屏幕闪烁 CUIWindowMng::GetClientScreen()->requestRedraw(); m_bShow = bShow; // 禅让窗口,无论显示还是关闭窗口,都需要进行禅让窗口更新 }
void SDLEventHandler::onWindowEvent(const SDL_WindowEvent& e) { /* *SDL provides two "resize" events. * Warp Drive only provides treatment for the "resize request" * type, for the moment. Should it prove useful, this will be ammended */ if (e.windowID != SDL_GetWindowID(DisplayManager::instance()->getScreen())) { return; } switch (e.event) { case SDL_WINDOWEVENT_SHOWN: onWindowShown(e); break; case SDL_WINDOWEVENT_HIDDEN: onWindowHidden(e); break; case SDL_WINDOWEVENT_EXPOSED: onWindowExposed(e); break; case SDL_WINDOWEVENT_MOVED: onWindowMoved(e); break; case SDL_WINDOWEVENT_SIZE_CHANGED: onWindowResized(e); break; case SDL_WINDOWEVENT_MINIMIZED: onWindowMinimized(e); break; case SDL_WINDOWEVENT_MAXIMIZED: onWindowMaximized(e); break; case SDL_WINDOWEVENT_RESTORED: onWindowRestored(e); break; case SDL_WINDOWEVENT_ENTER: onMouseEntered(e); break; case SDL_WINDOWEVENT_LEAVE: onMouseLeft(e); break; case SDL_WINDOWEVENT_FOCUS_GAINED: onKeyboardFocus(e); break; case SDL_WINDOWEVENT_FOCUS_LOST: onKeyboardFocusLost(e); break; case SDL_WINDOWEVENT_CLOSE: onWindowCloseRequest(e); break; default: // Unexpected event type! assert(0); break; } }