您能否在不使用 GetAsyncKeyState 或线程的情况下同时获取用户输入,同时还 运行 C++ 中用于 windows 程序的函数?
Can you simultaneously get user input while also running a function in C++ for a windows program without using GetAsyncKeyState or threading?
我有一个项目,我正在使用 Dev-C++ 作为 IDE 和 Windows 作为操作系统。由于项目的大小限制和当前知识,项目的复杂性受到限制,我宁愿避免使用 GetAsyncKeyState
和线程,除非我可以使用相当简单(少于 10 行)的方法。
我的程序目前使用 Text
函数显示文本,使用字符串并将它们输出到控制台 window。我想实现一个功能,允许用户按下一个键,并允许打印文本,而无需等待函数读取整个字符串。
例如:
"Welcome to ..." [user presses space bar while the text is slowly
being displayed character by character]
"Welcome to my program! This was developed by me!" [entire string is
displayed]
代码:
void Text(string input)
{
int x = 0;
for(int i = 0; i <= 3; i++) //decides when to stop running based on number of strings
{
while (input[x] != '[=12=]')
{
if(input[x] == '.' || input[x] == '!')
{
cout << input[x];
Sleep(375);
cout << " ";
x++;
}
else if(input[x] == '*')
{
Sleep(375);
cout << endl;
x++;
}
else if(input[x] == '~')
{
Sleep(2000);
system("CLS");
x++;
}
else
{
cout << input[x];
Sleep(75);
x++;
}
}
}
}
不,你不能以便携的方式。原因是通常的控制台上的标准 I/O 等待一行完成,因此您无法在键入时立即捕获单个字符。
不过,您可以使用非标准函数来实现!参见 Capture characters from standard input without waiting for enter to be pressed
我有一个项目,我正在使用 Dev-C++ 作为 IDE 和 Windows 作为操作系统。由于项目的大小限制和当前知识,项目的复杂性受到限制,我宁愿避免使用 GetAsyncKeyState
和线程,除非我可以使用相当简单(少于 10 行)的方法。
我的程序目前使用 Text
函数显示文本,使用字符串并将它们输出到控制台 window。我想实现一个功能,允许用户按下一个键,并允许打印文本,而无需等待函数读取整个字符串。
例如:
"Welcome to ..." [user presses space bar while the text is slowly being displayed character by character]
"Welcome to my program! This was developed by me!" [entire string is displayed]
代码:
void Text(string input)
{
int x = 0;
for(int i = 0; i <= 3; i++) //decides when to stop running based on number of strings
{
while (input[x] != '[=12=]')
{
if(input[x] == '.' || input[x] == '!')
{
cout << input[x];
Sleep(375);
cout << " ";
x++;
}
else if(input[x] == '*')
{
Sleep(375);
cout << endl;
x++;
}
else if(input[x] == '~')
{
Sleep(2000);
system("CLS");
x++;
}
else
{
cout << input[x];
Sleep(75);
x++;
}
}
}
}
不,你不能以便携的方式。原因是通常的控制台上的标准 I/O 等待一行完成,因此您无法在键入时立即捕获单个字符。
不过,您可以使用非标准函数来实现!参见 Capture characters from standard input without waiting for enter to be pressed