2015-12-02 728 views
0

我目前正在移出運行Awesomium而不是CefSharp的自助服務終端軟件。 我們主要的應用程序是用WPF和相比並排側的WindowsFormsHost主辦的WinForms的版本,這項工作是用CefSharp在WPF中託管的CefSharp WinForms瀏覽器WinFormsHost

我知道,WPF控件有一些嚴重的性能問題,的V45,轉換的平滑性等更好。

爲了達到這個目的,我正在使用這種將WPF窗口中的WinForms ChromiumWebBrowser嵌入到WindowsFormsHost中的方法。這一切工作,但我有問題獲得觸摸支持工作。 我們的信息終端具有觸摸屏並運行Windows 7/8.1,該觸摸可以完美地與WPF控件配合使用,但是當使用嵌入式WinForms時,單觸無法使用。 除了觸摸不工作以外,它還會竊取所有鍵盤事件並在內部使用它們,因爲我的事件處理程序在主WPF窗口上都沒有觸發。

如果任何人有任何想法或可以指向正確的方向來嘗試解決這個問題,將非常感激!

感謝

回答

0

你說的不是很好的支持,因此該方案沒有大量的信息。你看到的很多問題都可能是因爲CEF正在運行它的消息循環在一個單獨的線程中。如果您關閉MultiThreadedMessageLoop,那麼您將負責撥打Cef.DoMessageLoopWork()。我最近添加了一個粗略的演示WinForms Example。你可能會將其移植到WPF,儘管我從未嘗試過。

您在一定程度上未知的領域在那裏,所以你要做的最腿部的工作你自己。

僅供參考,有些方法可以提高WPF的性能。他們雖然有自己的一套缺點。見https://github.com/cefsharp/CefSharp/blob/cefsharp/45/CefSharp.Example/CefExample.cs#L58

+0

感謝您的回覆! 我已經嘗試過那些WPF性能改進,並且它們確實有一個效果,一個非常明顯的事實。問題是,當你隨後在WinFrame上自己測試或者在WPF中進行測試時,那裏的速度似乎再次突飛猛進。 我會看看是否可以獲得關於消息循環的各個部分,以及您的示例使用WPF,如果我有任何運氣,然後我會讓你知道。 – OpticFroggy

+0

因此,在WinFormsHost中運行它,然後顯式調用DoMessageLoopWork()似乎解決了部分問題。這樣做可以使輸入事件在WPF圖層中啓動,所以我現在可以快速打開開發工具和其他特定應用程序。有什麼方法可以將這些事件中的一些事件作爲觸摸事件插入到CefSharp瀏覽器中?我能看到的唯一相關的方法是SendMouseWheelEvent。 – OpticFroggy

+0

開箱即用,觸摸支持尚未在上游實施。見https://bitbucket.org/chromiumembedded/cef/issues/1059/cef3-multi-touch-support-with-offscreen和https://github.com/cefsharp/CefSharp/pull/1418 – amaitland

相關問題