2011-01-24 33 views
1
// handle alt+enter ourselves 
     form.KeyDown += (o, e) => 
     { 
      if (e.Alt && e.KeyCode == Keys.Enter) { 
       bool Full; 

       Output ThisOut; 
       swapChain.GetFullScreenState(out Full, out ThisOut); 

       if (Full == true) 
       { 

        swapChain.SetFullScreenState(false, ThisOut); 

       } 
       else if (Full == false) 
       { 

        swapChain.SetFullScreenState(true, ThisOut); 

       } 
      } 
      //  swapChain.IsFullScreen = !swapChain.IsFullScreen; 

ウィンドウモードに問題を切り替えるSlimDx全画面表示 - http://slimdx.org/tutorials/devicecreation.phpをしてswapchainのIsFullScreenプロパティがなかったことに気づきました。したがって、私は利用可能な他の方法を使用しようとし、問題に出くわしました。 - フルスクリーンに切り替えると、正常に動作します。しかし、私が非フルスクリーンに戻ったとき、私が見るのは、移動不可能な空白のボックスだけです。私はSlimDx上のチュートリアルを使用していた

何が起こっていますか?チュートリアルのようなisFullScreenプロパティが存在しないのはなぜですか?デバイスはどこかに失われていますか?

+0

私は分かりません。 GetFullScreenState、SetFullScreenStateを使用して上記のメソッドが動作しないのはなぜですか?これらのメソッドのドキュメントに基づいて、動作する必要があるようです。 –

答えて

2

私はこのslimDXの世界(とstackoverflowの投稿)にも新しく、同様の問題に基づいてあなたの質問を走りました。私は、これはVBで知っている、あなたは、C#を使用しているが、私はこれで成功を収めてきた、あなたは、元のウィンドウモードの説明をする必要があります注意してください。

Private Sub Form_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown 
    If e.Alt And e.KeyCode = Keys.Enter Then 
     Dim isFull As Boolean 
     swapChain.GetFullScreenState(isFull, Nothing) 
     swapChain.SetFullScreenState(Not isFull, Nothing) 
     swapChain.ResizeTarget(swapChainDescription.ModeDescription) 
    End If 
End Sub 

私はC#のプログラマーないんだけど、ここに私ですそれを取る:

form.KeyDown += (o, e) => 
    { 
     bool Full; 
     swapChain.GetFullScreenState(out Full, Null); 
     swapChain.SetFullScreenState(!Full, Null); 
     swapChain.ResizeTarget(swapChainDescription.ModeDescription); 
    } 

うまくいけば、誰かが一緒に来て、私が間違っているか、あなたは助けることができるなら、私を修正します。

これを正しく理解すれば、既に行っているモードの説明を探しているわけではありません。あなたは、ThisOutを渡し、ThisOutを渡し、ThisOutは、SetFullScreenStateメソッドの性質に基づいて、フルスクリーンのフラグを含みます。それはSlimDXだが、それは本当にすべてのMS DXですので、ここでの参照です:

http://msdn.microsoft.com/en-us/library/bb174579%28v=vs.85%29.aspx

は、より多くのを発見する記事内のリンクに従ってください。

フルスクリーンにならない場合は、Nullを渡すことになっています。既存のレンダリングターゲットを正確にするために、Null以外のものを渡しました。既存のレンダーターゲットがフルスクリーンに設定されました。関数を意図しているので、Nullを渡す(またはVBのため何もしない)。私の元の、ウィンドウ、説明を取って、ウィンドウ全体ではなくフルスクリーンであるモードを再び通過させることによって、すべてがうまくいくように動作します。

0

このチュートリアルのリンクに記載されているように、私たちはこの理由からライブラリにIsFullScreenプロパティを追加しましたが、現在のところリポジトリにしかありません(まだ公式リリースはありません)。

私たちはDirectXのリリーススケジュールに私たちのリリースを当てはめており、次のリリースを手に入れようとすると、これほど長い時間がかかります。彼らは、四半期ごとに一度行うために使用されるが、我々はので、ここで2010年

0

の6月以来のリリースを見ていない私がやったことです:それは私の作品と比べて少しクリーナーです

if (e.Alt && e.KeyCode == Keys.Enter) 
    { 
     bool isFull = swapChain.Description.IsWindowed; 
     swapChain.SetFullScreenState(isFull, null); 
    } 

それ以外の方法では、1行を減らし、.IsWindowed行をSetFullScreenStateに置くこともできます。

関連する問題