отключить режим быстрого редактирования консоли из c ++ - PullRequest
0 голосов
/ 03 апреля 2019

Я пытаюсь отключить режим быстрого редактирования моей консоли моей программой на С ++, потому что в моем приложении я не хочу никакого выбора.Я также не хочу никакой паузы, поскольку, когда кто-то щелкает с этим режимом, он приостанавливает игру.Я посмотрел онлайн и некоторую документацию, но я не знаю, что я делал неправильно.Сначала я попробовал приведенный ниже код из другого вопроса о переполнении стека, которое не сработало.

#include<conio.h>
#include<iostream>
#include<windows.h>
using namespace std;


int main(){
    HANDLE hInput;
    DWORD prev_mode;
    GetConsoleMode(hInput, &prev_mode); 
    SetConsoleMode(hInput, prev_mode & ~ENABLE_QUICK_EDIT_MODE);

    cout<<"The quick edit mode stopped now press any key to re enable it"<<endl;
    _getch();
    SetConsoleMode(hInput, prev_mode);
    cout<<"Quick edit mode reenabled click any key to exit";
    _getch();
    return 0;
}

затем я посмотрел эту документацию и нашел их примерно таким образом для SetConsoleMode.

Этот флаг позволяет пользователю использоватьмышь для выбора и редактирования текста.

Чтобы включить этот режим, используйте ENABLE_QUICK_EDIT_MODE |ENABLE_EXTENDED_FLAGS.Чтобы отключить этот режим, используйте ENABLE_EXTENDED_FLAGS без этого флага.

Затем я заменил ~ENABLE_QUICK_EDIT_MODE на ENABLE_EXTENDED_FLAGS и снова получил тот же результат, что я хочу знать, что я делаю неправильно.Я хочу отключить режим быстрого редактирования.

1 Ответ

0 голосов
/ 03 апреля 2019

В коде очень глупая ошибка.Проблема с кодом в том, что hInput HANDLE не был инициализирован с STD_INPUT_HANDLE, и поэтому метод SetConsoleMode не работал.Рабочий код, как показано ниже.

#include<conio.h>
#include<iostream>
#include<windows.h>
using namespace std;


int main(){
    HANDLE hInput;
    DWORD prev_mode;
    hInput = GetStdHandle(STD_INPUT_HANDLE);
    GetConsoleMode(hInput, &prev_mode); 
    SetConsoleMode(hInput, prev_mode & ENABLE_EXTENDED_FLAGS);
    cout<<"The quick edit mode stopped now press any key to re enable it"<<endl;
    _getch();
    SetConsoleMode(hInput, prev_mode);
    cout<<"Quick edit mode reenabled click any key to exit";
    _getch();
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...