在 SDL2 C# 包装器中检测 window 个事件

Detecting window events in the SDL2 C# wrapper

我正在通过 FNA 使用 SDL2 C# wrapper,我需要能够检测 window 何时调整大小,min/maximizes,等等。从我发现的情况来看我应该使用 SDL_EventFilter 委托和 SDL_WindowEventID 枚举。我尝试使用 SDL_AddEventWatchSDL_SetEventFilter 方法附加此类事件,但我没有收到任何与 window 管理相关的事件。

如何在 C# 包装器中正确使用 SDL window 事件?

在您的事件轮询循环中为 SDL_WINDOWEVENT 添加一个案例:

SDL_Event event;
while (SDL_PollEvent(out sdlEvent) == 1) {
     switch(sdlEvent.type) {
         case SDL_EventType.SDL_WINDOWEVENT:
             HandleWindowEvent(sdlEvent.window);
             break;

         // other events here ...
     }

     Thread.Sleep(1);
}

然后你可以有一个方法来处理这些事件:

HandleWindowEvents(SDL_WindowEvent wEvent) {
    switch(wEvent.windowEvent) {
        case SDL_WindowEventID.SDL_WINDOWEVENT_RESIZED:
            Console.WriteLine($"Window resized: {wEvent.data1}x{wEvent.data2}");
            break;

        // more window events here ...
    }
}

All window events are outlined in the Wiki.