2011-02-04 145 views
4

我已經做了一些搜索,但我找不到確切的答案。在我的C#WPF應用程序中,我得到HWND指針並將它傳遞給C DLL。然後,C DLL嘗試使用GDI調用在我的窗口上呈現各種疊加層。沒有錯誤,但沒有出現。如果我切換到Windows窗體,該DLL可以渲染它。如果我託管WindowsFormHost控件並從那裏使用hwnd,則具有相同的效果。我已經看到有關HwndHost控制的信息,但它看起來並不像我想要的那樣。也許有更多這種控制知識的人可以用不同的方式告訴我。我在某處讀到用於DirectX渲染的hwnd(如WPF)不能使用GDI。這是否使我的情況變得不可能?我可以通過在WPF窗口上覆蓋一個無邊框形式來僞造它,但顯然這不會太漂亮。任何想法或想法?GDI渲染到WPF窗口

回答

5

你不能讓WPF和GDI渲染到同一個hwnd,但是你可以很容易地在你的WPF應用程序中有一個子hwnd並讓GDI渲染它。看看HwndHost做到這一點。在this article中的「在WPF中託管Microsoft Win32窗口」部分有更多的細節。它還討論了在進行這種互操作時遇到的各種問題(如空域)。

+0

感謝您的迴應!我遇到了這個,但它看起來不像我想要的。我實際上沒有東西要託管。我只想要一個「乾淨」的hwnd交給GDI渲染dll。不幸的是,我還需要能夠將鼠標上/下移交給WPF,但這是次要的渲染。你能給我任何指導嗎? – 2011-02-04 21:52:09