如何在Lubuntu 16.04.1上的Mono上使用NativeMethods.GetUpdateRect?

时间:2016-11-21 06:14:16

标签: c# mono native-methods

我试图将一个优秀的Windows窗体程序移植到Linux并收到此错误:

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:GetUpdateRect noon Mono on Lubuntu 16.04.1?

编辑:
谢谢,knocte,你的评论。此编辑引用了尝试引用此函数的代码(因为注释不允许任何格式化):

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

1 个答案:

答案 0 :(得分:0)

嗯,答案是我问的是错误的问题 我本来应该问&#34;我如何替换依赖于非便携式Windows系统调用的ObjectListView.cs来将这个程序移植到Linux上的Mono?&#34;

ObjectListView似乎在Windows上运行良好,但与Linux或Mac系统不兼容。在这里有一个非常好的讨论 ObjectListView discussion board。 Steve Hiner的评论(2015-11-29)改变了我的搜索方向。史蒂夫的方法是&#34;我已经创建了一个代理,它在Windows上使用OLV,在Linux和Mac上使用股票列表视图。这将是OLV提供伪单声道支持的一种方式,它可以只使用股票列表视图而不需要任何花哨的功能。&#34;

感谢knocte让我思考正确的方向。