我正在尝试在 Lubuntu 16.04.1 上的 Mono 中编译一个非常有用的开源 Windows 程序“Ketarin”。
它使用在 user32.dll 中找到的函数“GetUpdateRect”,使用以下代码:
[DllImport("user32.dll", EntryPoint = "GetUpdateRect", CharSet = CharSet.Auto)]
private static extern IntPtr GetUpdateRectInternal(IntPtr hWnd, ref Rectangle r, bool eraseBackground);
这是一个不可移植的、Windows 特定的函数/系统调用,所以我想我是在问是否有人可以向我指出 Linux 上通过 Mono 提供的函数或方法,这些函数或方法可以完成 GetUpdateRect 在 Windows 上所做的事情。
Windows 函数和 Mono-on-Linux 函数之间是否存在等效的标准列表?
也许我需要问那些将 Windows 程序移植到 Linux 上运行的人“闲逛”的地方。
感谢您考虑这些事情。
答案1
好吧,答案是我问错了问题。
这个Windows函数由ObjectListView.cs调用,许多项目和解决方案都使用它,而不仅仅是我正在移植的程序。
它使用了如此多的 Windows 系统调用,以至于开发人员并没有尝试让它在 Linux 或 Mac 上运行。里面有一个很好的讨论ObjectListView 讨论区。 Steve Hiner (2015-11-29) 的评论改变了我的搜索方向。 Steve 的方法是“我已经创建了一个在 Windows 上使用 OLV 以及在 Linux 和 Mac 上使用股票列表视图的代理。这将是 OLV 提供伪单声道支持的一种方式,它可以只使用股票列表视图,而不需要任何花哨的功能。”
我可能需要问一个不同的问题,关于如何做史蒂夫所描述的事情。