繁体   English   中英

在SDL2 C#包装器中检测窗口事件

[英]Detecting window events in the SDL2 C# wrapper

我正在通过FNA使用SDL2 C#包装器 ,我需要能够检测窗口何时调整大小,最小化/最大化等等。从我发现的内容看来,我应该使用SDL_EventFilter委托和SDL_WindowEventID枚举。 我尝试使用SDL_AddEventWatchSDL_SetEventFilter方法附加这样的事件,但我没有得到任何与窗口管理相关的事件。

如何正确使用C#包装器中的SDL窗口事件?

在事件轮询循环中为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 ...
    }
}

所有窗口事件都在Wiki中列出。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM