title: DirectX11 Swapchain and window losing fullscreen status
body: <p>I just stumbled on this little annoying behavior, while adding full screen support on a sample program.</p>
  
  <p>Creating a full screen window works, but as soon as I move any window (from another application) on the output that contains my fullscreen window, it automatically switches back to windowed.</p>
  
  <p>Is there any way to prevent this behavior (so full screen window do not go back to windowed)?</p>
  
  <p>As a reference, this is a small standalone example (so problem can be replicated easily).</p>
  
  <p>Also if that is useful, I'm running on Windows 8.1.</p>
  
  <p>I already tried to change WindowAssociationFlags and SwapChainFlags, both with no success, same as using FlipSequential instead of Discard </p>
  
  <pre><code>SharpDX.DXGI.Factory2 factory = new SharpDX.DXGI.Factory2();
  SharpDX.DXGI.Adapter adapter = factory.GetAdapter(0);
  
  var renderForm1 = new RenderForm("Form 1");
  factory.MakeWindowAssociation(renderForm1.Handle, SharpDX.DXGI.WindowAssociationFlags.IgnoreAll);
  
  Device device = new Device(adapter, DeviceCreationFlags.BgraSupport);
  
  SharpDX.DXGI.SwapChainDescription sd = new SharpDX.DXGI.SwapChainDescription()
  {
      BufferCount = 2,
      ModeDescription = new SharpDX.DXGI.ModeDescription(0, 0, new SharpDX.DXGI.Rational(50, 1),  SharpDX.DXGI.Format.R8G8B8A8_UNorm),
      IsWindowed = true,
      OutputHandle = renderForm1.Handle,
      SampleDescription = new SharpDX.DXGI.SampleDescription(1,0),
      SwapEffect = SharpDX.DXGI.SwapEffect.Discard,
      Usage = SharpDX.DXGI.Usage.RenderTargetOutput,
      Flags = SharpDX.DXGI.SwapChainFlags.None
  };
  
  var swapChain1 = new SharpDX.DXGI.SwapChain(factory, device, sd);
  
  renderForm1.Left = 1922; //Just hardcoded here to move window to second screen
  renderForm1.Width = 1920;
  renderForm1.Height = 1080;
  renderForm1.FormBorderStyle = FormBorderStyle.None;
  
  swapChain1.SetFullscreenState(true, null);
  swapChain1.ResizeBuffers(2, 1920, 1080, SharpDX.DXGI.Format.R8G8B8A8_UNorm, SharpDX.DXGI.SwapChainFlags.AllowModeSwitch);
  
  var resource = Texture2D.FromSwapChain&lt;Texture2D&gt;(swapChain1, 0);
  var renderView = new RenderTargetView(device, resource);
  
  RenderLoop.Run(renderForm1, () =&gt;
  {
      device.ImmediateContext.ClearRenderTargetView(renderView, new SharpDX.Color4(1, 0, 0, 1));
      swapChain1.Present(1, SharpDX.DXGI.PresentFlags.None);
  });
  </code></pre>
  
  <p>Edit:
  I also tried a c++ sample (just taken DirectX11 basic tutorial from Microsoft and added full screen switch), this leads to the same behavior, so this is not a SharpDX specific issue.</p>
  
  <p>I looked at the message loop, and once this occurs, first fullscreen mode is changed back to windowed, and I receive a WM_DISPLAYCHANGE message).</p>