void DesktopApp::onMessage(UINT message, WPARAM wParam, LPARAM lParam)
{
	if (!Engine::instance().isInit()) return;
	if (message == WM_SIZE)
	{
		UpdateForWindowSizeChange();
		Engine::instance().onWindowResizeInternals();
		m_mainClass->onWindowResize();

		//case WM_SIZING:
		//	m_mainClass->onResizeWindowInternals(rc->right - rc->left, rc->bottom - rc->top);
		//	m_mainClass->onWindowResize();
		//	UpdateForWindowSizeChange();
		//	break;
	}
	else if (message == WM_SYSCOMMAND)
	{
		switch (wParam)
		{
		case SC_CLOSE:
			//m_mainClass->onSuspending();
			break;
		case SC_MINIMIZE:
			m_suspended = true;
			Utils::print("Window is minimized => suspending the app\n");
			break;
		case SC_RESTORE:
			m_suspended = false;
			Utils::print("Window is restored => unsuspending the app\n");
			break;
		}
	}
	else
	{
		if (m_isCrashedState) return;
		m_desktopAppControls.onMessage(message, wParam, lParam, m_mainClass, reinterpret_cast<const DesktopWindow*>(getWindow())->getHwnd());
	}
}
bool
FrameworkView::Render(const nsIntRegion& aInvalidRegion)
{
  NS_ABORT_IF_FALSE(NS_IsMainThread(), "not main thread");

  if (mShuttingDown || mPainting || !mWidget) {
    return false;
  }

  // If we haven't created the layer manager, then create it now.
  // The swap buffer will be resized automatically by the layer manager.
  if (!mWidget->mLayerManager) {
    (void)mWidget->GetLayerManager();
    if (!mWidget->mLayerManager) {
      NS_WARNING("mWidget->GetLayerManager() failed!");
      return false;
    }
  }

  if (IsRenderMode(gfxWindowsPlatform::RENDER_GDI) ||
      IsRenderMode(gfxWindowsPlatform::RENDER_IMAGE_STRETCH32) ||
      IsRenderMode(gfxWindowsPlatform::RENDER_IMAGE_STRETCH24)) {
    NS_WARNING("Unsupported render mode, can't draw. Needs to be D2D.");
    return false;
  }

  if (mWidget->GetTransparencyMode() != eTransparencyOpaque) {
    NS_WARNING("transparency modes other than eTransparencyOpaque unsupported, can't draw.");
    return false;
  }

  AutoRestore<bool> painting(mPainting);
  mPainting = true;
  UpdateForWindowSizeChange();
  gfxWindowsPlatform::GetPlatform()->UpdateRenderMode();
  mWidget->Paint(aInvalidRegion);
  return true;
}