在 SDL2 C# 包装器中检测 window 个事件
Detecting window events in the SDL2 C# wrapper
我正在通过 FNA 使用 SDL2 C# wrapper,我需要能够检测 window 何时调整大小,min/maximizes,等等。从我发现的情况来看我应该使用 SDL_EventFilter
委托和 SDL_WindowEventID
枚举。我尝试使用 SDL_AddEventWatch
和 SDL_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.
我正在通过 FNA 使用 SDL2 C# wrapper,我需要能够检测 window 何时调整大小,min/maximizes,等等。从我发现的情况来看我应该使用 SDL_EventFilter
委托和 SDL_WindowEventID
枚举。我尝试使用 SDL_AddEventWatch
和 SDL_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.