我使用SDL2 C# wrapper通过FNA,我需要能够检测窗口何时调整大小,最小化/最大化等等。从我发现的内容看来,我应该使用SDL_EventFilter
代表和SDL_WindowEventID
枚举。我尝试使用SDL_AddEventWatch
和SDL_SetEventFilter
方法附加此类活动,但我没有收到与窗口管理相关的任何事件。
如何正确使用C#包装器中的SDL窗口事件?
答案 0 :(得分:2)
在您的事件轮询循环中添加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 ...
}
}
所有窗口事件都在the Wiki中列出。