如何在Linux机器上的Mono中访问消息队列?

时间:2019-06-07 17:01:35

标签: c# linux mono interop peekmessage

我正在用C#和Mono编写游戏。我执行游戏循环并在窗口空闲时(即消息队列为空时)进行渲染。我了解如何在Windows上执行此操作(使用P / Invoke从“ User32.dll”导入PeekMessage),但是我不知道如何在Linux构建中获取有关消息队列状态的相同信息。我已经浏览了Github上的Mono仓库,它看起来并不像直接暴露给消息队列。如果有帮助,我正在运行的Linux版本是Peppermint。任何对此的指导将不胜感激。

bool WindowIsIdle()
{
    #if Windows
        NativeMessage result;
        return PeekMessage(out result, IntPtr.Zero, 0, 0, 0) == 0;
    #elif Linux
    return false; //how can I get this information?
    #endif
}

#if Windows
    //Imports a native Win32 function for checking the windows message queue
    [System.Runtime.InteropServices.DllImport("User32.dll")]
    static extern int PeekMessage(out NativeMessage message, IntPtr handle, uint filterMin, uint filterMax, uint remove);

    struct NativeMessage
    {
        IntPtr Handle;
        uint Message;
        IntPtr WParameter;
        IntPtr LParameter;
        uint Time;
        Point Location;
    }
#endif

0 个答案:

没有答案