Почему все комбинации клавиш работают, а эта нет?? C++, WinApi UP

RegisterHotKey возвращает 1, потому проблема не в этом!

Написал прогу чтобы делать "макросы". (Типо буфер обмена в который можно засунуть хоть 20 текстов). Всё эта реализовано так: Создаёшь макрос, задаешь ему комбинацию клавиш, и потом можешь по нажатию комбинации засунуть в буфер обмена что тебе нужно.

Проблема: В функции main есть регистрация комбинаций клавиш. Но когда я в цикле проверяю значения wparam комбинация с идентификатором HOT_CREATE никак не хочет там появляться, но при этом другие клавиши работают. Код ниже, помогите пожалуйста! (Писал всё на быструю руку)

#pragma once
#include <conio.h>
#include <stdio.h>
#include <cstdlib>
#include <fstream>
#include "Windows.h"
#include "winuser.h"
#include <cmath>
#include <iostream>
#include <iomanip>
#include <complex>
#include <string>
#include <vector>

using namespace ::std;

#define infinity true

void setcurCONSOLE(int x, int y)
{
    COORD position = {x, y};
    HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleCursorPosition(hConsole, position);
}

void toClipboard(HWND hwnd, const std::string& s) {
    OpenClipboard(hwnd);
    EmptyClipboard();
    HGLOBAL hg = GlobalAlloc(GMEM_MOVEABLE, s.size() + 1);
    if (!hg) {
        CloseClipboard();
        return;
    }
    memcpy(GlobalLock(hg), s.c_str(), s.size() + 1);
    GlobalUnlock(hg);
    SetClipboardData(CF_TEXT, hg);
    CloseClipboard();
    GlobalFree(hg);
}

void hidewin()
{
    ShowWindow(GetConsoleWindow(), SW_HIDE);
}
void showwin()
{
    ShowWindow(GetConsoleWindow(), SW_SHOWNORMAL);
}

struct bmacro_elemdat
{
    string name;
    string txt;
    string key;
    size_t id;
};

#define in_bmac ifstream infile ("bmacro.bin");
#define out_bmac ofstream outfile ("bmacro.bin", ios::app);
#define bin_clear ofstream _______CLEAR ("bmacro.bin");

class bmacro_dat
{
public:
    vector<bmacro_elemdat>data;
    size_t nextid = 0;

    void update();
    void pushrecord(bmacro_elemdat bmacroelem);
    size_t num_records();
    void delete_record(size_t id);
    void writedata();
};

void bmacro_dat::writedata()
{
    bin_clear;
    for (size_t x = 0; x < data.size(); x++)
    {
        pushrecord(data[x]);
    }
}

void bmacro_dat::delete_record(size_t real_index)
{
    data.erase(data.begin() + real_index);
    writedata();
}

size_t bmacro_dat::num_records()
{
    bmacro_elemdat elem;
    in_bmac;
    size_t SIZE = 0;
    while (infinity)
    {
        getline(infile, elem.name, (char)1);
        getline(infile, elem.txt, (char)1);
        getline(infile, elem.key, (char)1);
        if (elem.key.size() == 0)
        {
            break;
        }
        SIZE++;
    }
    return SIZE;
}

void bmacro_dat::update()
{
    nextid = 0;
    for (size_t x = 0; x < data.size(); x++)
    {
        UnregisterHotKey(NULL, data[x].id);
    }
    data.clear();

    in_bmac

    while (infinity)
    {
        bmacro_elemdat tmpdat;
        getline(infile, tmpdat.name, (char)1);
        getline(infile, tmpdat.txt, (char)1);
        getline(infile, tmpdat.key, (char)1);
        if (tmpdat.name.size() == 0)
        {
            break;
        }
        tmpdat.id = nextid;
        RegisterHotKey(NULL, tmpdat.id, MOD_CONTROL, tmpdat.key[0]);
        nextid++;

        data.push_back(tmpdat);
    }
    infile.close();


    return;
}

void bmacro_dat::pushrecord(bmacro_elemdat bmacroelem)
{
    out_bmac;

    outfile << bmacroelem.name << (char)1;
    outfile << bmacroelem.txt << (char)1;
    outfile << bmacroelem.key << (char)1;
}

#define toindex(__arg)__arg - 1

string bfill(string str, size_t range, char sym = ' ')
{
    string tmp;
    
    if (str.size() > range)
    {
        for (size_t x = 0; x < range; x++)
        {
            tmp.push_back(str[x]);
        }
        if (tmp[toindex(range)] != ' ')
        {
            tmp[toindex(range)] = '.';
            tmp[toindex(range) - 1] = '.';
            tmp[toindex(range) - 2] = '.';
        }
        return tmp;
    }
    else
    {
        for (size_t x = 0; x < str.size(); x++)
        {
            tmp.push_back(str[x]);
        }
        for (size_t x = 0; x < range - str.size(); x++)
        {
            tmp.push_back(sym);
        }
        return tmp;
    }
}

#define showtable cout << '\t' << bfill("Счёт", 6) << bfill("Имя макроса", 32) << bfill("Клавиша", 9) << bfill("Текст", 48) << endl;for (size_t x = 1; x <= db.data.size(); x++){   string creat;   creat += "Ctrl + "; creat += db.data[x].key;    cout << '\t' << bfill(to_string(x), 6) << bfill(db.data[x].name, 32) << bfill(creat, 9) << bfill(db.data[x].txt, 48) << endl;}

int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    auto hWnd = GetConsoleWindow();
    bmacro_dat db;

    hidewin();

    #define HOT_DOCS 8975496
    #define HOT_CREATE 94204
    #define HOT_EXIT 6445643
    #define HOT_DEL 564564

    RegisterHotKey(0, HOT_DOCS, MOD_CONTROL | MOD_SHIFT, VK_F5);
    RegisterHotKey(0, HOT_CREATE, MOD_CONTROL | MOD_SHIFT, VK_F6);
    RegisterHotKey(0, HOT_DEL, MOD_CONTROL | MOD_SHIFT, VK_F7);
    RegisterHotKey(0, HOT_EXIT, MOD_CONTROL | MOD_SHIFT, VK_F8);

    MSG msg;

    while (infinity)
    {  
        GetMessage(&msg, NULL, NULL, NULL);
        db.update();
        if (msg.message == WM_HOTKEY)
        {
            if (msg.wParam == HOT_DOCS) // Docs
            {
                showwin();
                cout << "!!!+++++| Bmacro |+++++!!!" << endl;
                cout << "       CTRL + SHIFT + F8 - Выход" << endl;
                cout << "       CTRL + SHIFT + F5 - Документация" << endl;
                cout << "       CTRL + SHIFT + F6 - Создать макрос" << endl;
                cout << "       CTRL + SHIFT + F7 - Удалить макрос" << endl;
                cout << "$$$-----| Macros |-----$$$" << endl;
                showtable;
                Sleep(1500);
                system("PAUSE");
                system("cls");
                hidewin();
            }

            if (msg.wParam == HOT_CREATE) // Create
            {
                showwin();
                bmacro_elemdat elem;

                cout << "!!!+++++| Bmacro |+++++!!!" << endl;
                cout << "       Введите имя макроса" << endl;
                getline(cin, elem.name);
                system("cls");

                cout << "!!!+++++| Bmacro |+++++!!!" << endl;
                cout << "       Введите текст макроса, и завершите его клавишей TAB" << endl;
                stringstream creatortxt;
                while (GetAsyncKeyState(VK_TAB) != -32767)
                {
                    string tmp;
                    getline(cin, tmp);
                    creatortxt << tmp;
                }
                elem.txt = creatortxt.str();
                system("cls");

                cout << "!!!+++++| Bmacro |+++++!!!" << endl;
                cout << "       Нажмите клавишу которой активируется макрос" << endl;

                bool notexitwhile = true;
                while (notexitwhile)
                {
                    for (int x = 8; x <= 190; x++)
                    {
                        if (GetAsyncKeyState(x) == -32767)
                        {
                            elem.key = (char)x;
                            notexitwhile = false;
                            break;
                        }
                    }
                }

                db.pushrecord(elem);
                hidewin();
                system("cls");
                //msg = Emptymsg;
            }

            if (msg.wParam == HOT_EXIT)
            {
                break;
            }

            if (msg.wParam == HOT_DEL)
            {
                showwin();
                cout << "!!!+++++| Bmacro |+++++!!!" << endl;
                cout << "       Напечатайте имя макроса который хотите удалить: " << endl;
                
                showtable;

                string id;
                getline(cin, id);
                for (size_t x = 0; x < db.data.size(); x++)
                {
                    if (db.data[x].name == id)
                    {
                        db.delete_record(db.data[x].id);
                    }
                }
                system("cls");
                hidewin();
                //msg = Emptymsg;
            }

            for (size_t x = 0; x < db.data.size(); x++)
            {
                if (msg.wParam == db.data[x].id)
                {
                    toClipboard(hWnd, db.data[x].txt);
                    //msg = Emptymsg;
                    break;
                }
            }
        }
        Sleep(50);
    }
    return EXIT_SUCCESS;
}

Ответы (0 шт):