2011-02-04 29 views
4

私はいくつかの検索を行っていますが、これについて正確な答えを見つけることはできません。私のC#WPFアプリケーションでは、HWNDポインタを取得してC DLLに渡します。そのC DLLは、次に、GDI呼び出しを使用して、ウィンドウの上に並べ替えをレンダリングしようとします。エラーはありませんが、何も表示されません。私がWindowsフォームに切り替えると、dllはそれを上手くレンダリングできます。私がWindowsFormHostコントロールをホストし、そこからhwndを使用すると、私は同じ効果があります。私はHwndHostコントロールに関する情報を見てきましたが、実際に私が望むようには見えません。おそらく、そのコントロールをもっと知っている人が私に別のことを教えてくれるかもしれません。私は、WPFのようなDirectXレンダリングに使われるhwndもGDIを使うことができないと読んでいます。これは私のシナリオを不可能にするか?私はWPFウィンドウの上にフチ無しのフォームを重ねることでそれを偽造することができましたが、それはあまりにもかわいくないでしょう。どのような考えやアイデアですか?WPFウィンドウへのGDIレンダリング

答えて

5

同じhwndにWPFとGDIレンダリングを使用することはできませんが、簡単にWPFアプリケーション内に子hwndを持たせてGDIにレンダリングさせることは簡単です。それを行うためにHwndHostを見てください。 this articleの「WPFでのMicrosoft Win32ウィンドウのホスティング」のセクションにもう少し詳細があります。また、このタイプのinteropを実行するときに(空域のように)実行するさまざまな問題についても説明します。

+0

お返事ありがとうございます!私はこれを見つけたが、私が探していたもののようには見えなかった。私は実際にホストするものはありません。私はちょうど "きれいな" hwndをGDIレンダリングDLLに渡すことを望みます。悲しいことに、WPFにマウスの上下を渡すこともできる必要がありますが、これはレンダリングには二次的です。あなたは私に何か指導を与えることができますか? –

+1

あなたはHWNDが必要で、それがHwndHostのホストです。 WM_PAINTを処理し、デバイスコンテキストを取得し、描画を開始します。 –

関連する問題