【问题标题】:Using SDL2 for Capturing Key strokes使用 SDL2 捕获击键
【发布时间】:2014-06-27 21:35:31
【问题描述】:

有 2 个与使用 SDL2 相关的问题。

  1. 我想在我的 C++ 应用程序中捕获所有键盘输入。该应用程序是一个 COM dll,它将在后台运行并捕获所有输入。所以这个应用程序没有窗口,在这种情况下是否可以捕获键盘输入?如果是,怎么做?

我已经看到了 SDL2 的示例,他们首先创建了一个 SDL 窗口,然后捕获键盘输入。但我不想那样。我想要的是我的应用程序能够自己捕获所有键盘输入。

  1. 如果我使用 MFC 创建自己的窗口,是否可以将其附加到 SDL2 并在我的窗口处于焦点时捕获所有键盘输入。同样,我不想创建 SDL 窗口。

【问题讨论】:

    标签: c++ sdl sdl-2


    【解决方案1】:

    您可以使用 GetAsyncKeyState 它简单快捷, 此代码向您展示了如何使用它。

    if(GetAsyncKeyState('Q')){//if Q key has been clicked
       //Do something
    }
    

    这里是所有关键代码的列表 http://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx

    【讨论】:

    • 我不想使用任何 Windows 函数调用。我想为此目的使用 SDL,以便这段代码兼容多平台。
    • 这也仅在我执行“SDL_CreateWindow”时才有效。即,它将弹出一个 SDL 窗口。我不想这样做。
    • SDL 使用自己的程序入口点,而 MFC 应用程序使用标准 WinMain。我认为除了修改 SDL 源代码并重新编译之外别无他法。
    【解决方案2】:

    所以这个应用程序没有窗口,在这种情况下是否可以捕获键盘输入?

    不使用 SDL。

    如果我使用 MFC 创建自己的窗口,是否可以将其附加到 SDL2 并让它在我的窗口处于焦点时捕获所有键盘输入。

    sounds 就像你可能对SDL_CreateWindowFrom() 有一些运气。

    【讨论】:

      【解决方案3】:

      您可以尝试使用带有 SDL_WINDOW_HIDDEN 标志的窗口。这样我会假设你可以让他输入 sdl 函数而不会弹出窗口。

      不确定这是否是您想要的,但我希望它有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-11
        • 1970-01-01
        • 2011-05-12
        • 1970-01-01
        • 1970-01-01
        • 2012-05-06
        相关资源
        最近更新 更多