我正在尝试通过c ++程序禁用控制台的快速编辑模式,因为在我的应用程序中我不需要任何选择。我也不希望有任何暂停,因为当有人单击此模式时,它会暂停游戏。我在网上看过一些文档,但是我不知道自己做错了什么。 我首先在堆栈溢出的另一个问题下尝试了下面的代码,但没有用。
#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;
}
然后我抬起头来this documentation,他们为SetConsoleMode
找到了类似的东西。
此标志使用户可以使用鼠标来选择和编辑文本。
要启用此模式,请使用ENABLE_QUICK_EDIT_MODE | ENABLE_EXTENDED_FLAGS。要禁用此模式,请使用ENABLE_EXTENDED_FLAGS 没有此标志。
然后,我用~ENABLE_QUICK_EDIT_MODE
替换了ENABLE_EXTENDED_FLAGS
,同样的结果我想知道我在做什么错。
我想禁用快速编辑模式。
答案 0 :(得分:0)
代码中有一个非常愚蠢的错误。代码的问题在于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;
}