2010-12-14 14 views
0

QtアプリケーションからフルスクリーンのDirectXウィンドウを表示する必要があります。 DirectXはQtのことでもう直接サポートされていませんがQtキーボードイベント(DirectXフルスクリーン)

これは十分に簡単でなければなりません - ちょうどあなた自身のpaintEventを()を提供し、QWidgetのを上書きしてWA_PaintOnScreen属性を設定します。

しかし、アプリは全画面表示のときDirectXは、すべてのマウスとキーボード入力をつかんれる - ので、アプリのうち唯一の方法は、Ctrl + Alt + Delです。

ps。 DirectXキーボードハンドラを書いたとしても、正しいQkeypressイベントを作成してQtに渡す方法を見つける必要があります。

これを行った人はいますか?または、DirectXにキーボードを掴まないように指示する簡単な方法はありますか?私の知識のDirect3Dに

答えて

1

は、キーボードを得ることはありません。あなたの問題は、フルスクリーンのDirect3Dがまったく別の獣であるという事実から生じます。 GDI(Qtがレンダリングにうまく使うかもしれない)のようなものは、デフォルトでは動作しません。実行時にはたくさんの情報がフックされます。その情報はおそらくQtに到達することは決してありません。あなたが持っているオプションはQtを再実装してDirect3D(Lighthouseプロジェクト?)を使ってレンダリングするか、擬似フルスクリーンを使うことです。これは通常、画面と同じサイズのクライアント領域を持つウィンドウを作成し、それを正しく配置することによって行われます。

後者はおそらく最も簡単な解決策になる...

+0

はい私は、フルスクリーン部分にはD3Dが必要です - Qt内からD3Dサーフェスに直接描画するだけです。 D3Dドライバの一部であるホットキーはまだ機能しています。つまり、D3D keybフックを作成する必要があるようです。また、D3Dサーフェス上にQtメニューを描画することはおそらく非常に難しいことを意味します。 –

0

でも後でそこはQt 4.3から4.5またはそのような何かに事のD3DWidgetの種類を取得しようとする試みでしたが、それは安定していないか、承認されないと除去された。

おそらく実際には灯台はオプションです(中規模の作業量では、基本的にOS/DXのものをQtのものにリンクします)。古いQtブランチの古いdirect3Dコードを見ることができます。私はこれを使ったことがなく、おそらくQtの最新バージョンで使うつもりはありませんが、何よりも優れています。

+0

DirectXレンダラはクロスプラットフォームを望んでおり、Qtの未来は本当に携帯電話にあるため、削除されました(おそらく)。 –

+0

@Martin:確かに、私はそれらの行の間でも読んでいます... OpenGLはうまく統合されています、それはプラスです! – rubenvb