2016-11-21 39 views
0

我試圖端口一個偉大的Windows窗體程序,Linux和得到這個錯誤:如何在Lubuntu 16.04.1的Mono上使用NativeMethods.GetUpdateRect?

System.EntryPointNotFoundException: GetUpdateRect 
    at (wrapper managed-to-native) 
CDBurnerXP.Controls.NativeMethods:GetUpdateRectInternal 
(intptr,System.Drawing.Rectangle&,bool) 
at CDBurnerXP.Controls.NativeMethods.GetUpdateRect 
(System.Windows.Forms.Control cntl) [0x0000f] in 
<ce4ca0f630654e4c8c1f96509f1eae82>:0 

有沒有辦法來支持C#調用
NativeMethods:對Lubuntu 16.04.1 GetUpdateRect中午單?


編輯:
感謝,knocte,爲您的評論。此編輯爲引用的代碼試圖引用這個功能(因爲意見不容許任何格式)位:

[DllImport("user32.dll", EntryPoint = "GetUpdateRect", CharSet = CharSet.Auto)] 
private static extern IntPtr GetUpdateRectInternal(IntPtr hWnd, ref Rectangle r, bool eraseBackground); 
+0

如果您的Windows窗體程序使用本機P /調用,它已經是一個非跨平臺的程序,依賴於Windows系統調用 – knocte

+0

謝謝,nocte,但我太新,這個場景以確保我理解你正確。我添加了一些試圖引用GetUpdateRect到我原來的問題的代碼,所以代碼部分可以正確格式化。 – JimH44

+0

是的,該程序沒有考慮跨平臺的使用 - 只考慮Windows。所以我猜我是問有沒有人知道在Linux上是否有單聲道的東西可以完成GetUpdateRect在Windows上的操作。或者Windows上的函數與Linux上的等價物之間的任何關聯表。再次感謝您考慮這些問題。我堅持不懈,因爲Ketarin是一個非常有用的程序,我希望能夠在Linux上本地運行。 (它曾經在WINE上工作過,但有些事情已經破裂,我無法修復它。) – JimH44

回答

0

那麼,答案是,我是問錯了問題。
我應該問「如何取代取決於非可移植的Windows系統調用的ObjectListView.cs,將此程序移植到Mono上?」

ObjectListView似乎在Windows上運行得非常好,但與Linux或Mac系統不兼容。 ObjectListView discussion board有很好的討論。 Steve Hiner的評論(2015-11-29)改變了我的搜索方向。史蒂夫的做法是「我已經創建了一個使用Windows上的OLV和Linux和Mac上的股票列表視圖的代理,這將是OLV提供僞單聲道支持的一種方式,它可以使用股票列表視圖,而不需要任何花哨的功能。」

謝謝,knocte,讓我在正確的方向思考。