aa7481542 2024-10-11 12:56 采纳率: 16.7%
浏览 13
已结题

C++ 如何判断设置快捷键来实现隐藏/显示窗口

我想给窗口添加一个快捷键,比如快捷键设置的是home键,如何写判断让在键盘上按home键来实现隐藏/显示窗口



```c++

class Menu
{
public:
    static void DrawMain(const ImFontAtlas* FontAtlas)
    {
        ImGui::PushFont(FontAtlas->Fonts[3]);

        MenuPlayerLists::Render(FontAtlas);

        ImGui::PopFont();
        if (GameData.Config.Window.Setting)
        {
            ImGui::PushFont(FontAtlas->Fonts[2]);
            const ImVec2 Spacing = ImGui::GetStyle().ItemSpacing;
            ImGui::Begin("test", NULL, ImGuiWindowFlags_NoDocking | ImGuiWindowFlags_NoSavedSettings | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_NoBackground);
            ImGui::SetWindowPos(ImVec2(100, 100), ImGuiCond_Always);
            ImGui::SetWindowSize(ImVec2(500, 200), ImGuiCond_Always);
            ImGui::SetNextWindowSize({ Style::Window::Size.x + Spacing.x, Style::Window::Size.y + Spacing.y });
            ImGui::Begin(U8("Ping"), &GameData.Config.Window.Setting, ImGuiWindowFlags_NoDocking | ImGuiWindowFlags_NoSavedSettings | ImGuiWindowFlags_NoResize);
            {
                ImVec2 Pos = ImGui::GetWindowPos();
                ImVec2 OPos = Pos;
                Pos.x += Spacing.x / 2;
                Pos.y += Spacing.y / 2;
                
                ImGui::GetWindowDrawList()->AddRectFilled(Pos, ImVec2(Pos.x + Style::Window::Size.x, Pos.y + Style::Window::Size.y), ImGui::GetColorU32(Style::Window::Background), Style::Window::Rounding);
                ImGui::SetCursorPos(ImVec2(Style::Padding + Spacing.x / 2, Style::Padding));
                ImGui::PushFont(FontAtlas->Fonts[1]);
                ImGui::PopFont();

```

  • 写回答

15条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-10-11 12:57
    关注

    以下回复引自免费微信小程序:皆我百晓生。 如问题解决,还请采纳。如仍有疑问,请回复留言或私信博主,以便获得更精准的帮助。

    要在C++中使用<WINAPI.H>库来实现窗口的快捷键隐藏和显示功能,你可以通过以下步骤操作:

    1. 首先,在你的项目文件夹中创建一个新的库文件(例如:MENU.CPP),然后编写以下代码:
    #INCLUDE <WINDOWS.H>
    
    // 声明一个菜单类
    CLASS MENU {
    PUBLIC:
        // 创建一个快捷键
        VOID CREATESHORTCUT(INT SHORTCUTCODE, CONST CHAR* SHORTCUTTEXT)
        {
            // 为快捷键分配一个唯一的ID
            INT ID = CREATESHORTCUTS(SHORTCUTCODE);
    
            // 根据快捷键的类型获取对应的快捷键对象
            SHORT SHORTCUTOBJECT;
            GETSHORTCUTSOBJECT(ID, &SHORTCUTOBJECT);
            
            // 设置快捷键
            SETSHORTCUTSOBJECT(SHORTCUTOBJECT, SHORTCUTTEXT);
        }
    
    PRIVATE:
        // 创建快捷键对象
        SHORT CREATESHORTCUTS(INT SHORTCUTCODE) {
            // 创建快捷键对象
            RETURN GETSHORTCUTSOBJECT(SHORTCUTCODE);
        }
        
        // 获取快捷键对象
        SHORT GETSHORTCUTSOBJECT(INT SHORTCUTCODE) {
            // 返回快捷键对象
            RETURN NULL; // 这里应该返回NULL
        }
        
        // 设置快捷键
        VOID SETSHORTCUTSOBJECT(SHORT SHORTCUTOBJECT, CONST CHAR* SHORTCUTTEXT) {
            // 将快捷键对象与快捷键文本绑定
            SETSHORTCUTOBJECT(SHORTCUTOBJECT, SHORTCUTTEXT);
        }
    };
    
    INT MAIN()
    {
        // 初始化快捷键对象
        MENU::CREATESHORTCUT(0X43210, "HOME");
    
        RETURN 0;
    }
    
    1. 在你的主程序或任何需要调用快捷键函数的地方,你将调用 MENU::CREATESHORTCUT() 函数来创建一个快捷键,并将其作为参数传递给 SETSHORTCUTSOBJECT() 函数。这样,你就可以根据快捷键的类型来控制窗口是否隐藏或显示了。

    2. 最后,你需要确保你已经正确地包含并引用了WINAPI.H库,因为这个库是C++中用于WINDOWS API的主要库之一。

    完成上述步骤后,你应该可以在C++应用程序中轻松地实现窗口的快捷键隐藏和显示功能。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月11日
  • 创建了问题 10月11日