【发布时间】:2018-03-07 16:19:05
【问题描述】:
我正在尝试在 C++ 中使用 SDL 和 ffmpeg 制作视频播放器。我创建了两个单独的线程,一个在 SDL 窗口上呈现视频,一个用于处理窗口事件。当用户单击并释放视频时,我希望它切换播放/暂停。但是,它会触发多次,甚至在我释放鼠标之前就发生了事件,这会导致不可预知的行为。
我的代码:
SDL_Event event;
while (1)
{
SDL_PollEvent(&event);
switch (event.type)
{
case SDL_QUIT:
SDL_DestroyWindow(screen);
SDL_Quit();
break;
case SDL_MOUSEBUTTONUP:
if (event.button.state == SDL_RELEASED)
{
printf("Mouse released\n");
}
break;
}
}
当我单击窗口并按住不放时,我希望它不会打印Mouse released,直到我释放按钮。但是,在我按住鼠标按钮的整个过程中,它都会打印Mouse released。我不知道这是否与我在笔记本电脑上使用触摸板有关。
【问题讨论】:
-
请发布您的问题的最小示例。
-
@Aram 我添加了一个例子。
-
SDL_PollEvent有一个返回值。这可能被证明是非常有用的。 -
@IInspectable 哇,太尴尬了……这就是我没有彻底阅读文档的结果。它解决了我的问题,如果你把它变成一个答案,我会接受它。非常感谢。
标签: c++ mouseevent sdl-2