4

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

4

1 に答える 1

5

WPFとGDIを同じhwndにレンダリングすることはできませんが、WPFアプリ内に子hwndを簡単に配置して、GDIをレンダリングさせることができます。そのためのHwndHostを見てください。この記事の「WPFでのMicrosoftWin32ウィンドウのホスティング」のセクションには、もう少し詳細があります。また、このタイプの相互運用を行うときに遭遇するさまざまな問題(空域など)についても説明します。

于 2011-02-04T20:27:05.463 に答える