Для цели, которую я представил, вам не нужно вызывать консоль.Если вы не хотите использовать метод glut, описанный выше, вместо этого вы можете использовать несколько функций, присутствующих в заголовочном файле windows.h, для ввода данных.
Лучший способ реализовать вводы без переизбытка состоит в создании потока в вашей программе, который принимает входные данные и изменяет несколько переменных, которые может использовать основной поток.В качестве примера рассмотрим простую программу:
#include <windows.h>
#include <pthread.h>
//the thread that takes the inputs
void * takeInputs(void * outputVariable)
{
//casts the output type so the compiler won't complain about setting void* to something
char * output = (char*) outputVariable;
//generic loop to stay alive
while (1 == 1) {
//checks to see if the key is in the on state, by getting only the needed bit in the data.
//In this case, we're checking to see if the A key on the keyboard is pressed
//You can use different keys like the arrow keys, using VK_UP VK_RIGHT
if (GetAsyncKeyState('A') & 0x8000 != 0)
{
*output = 1;
}
//put a delay in here so that the input doesn't consume a lot of cpu power
Sleep(100);
}
pthread_exit(0);
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int iCmdShow)
{
//DoUnimportantWindowsSetup
char option = 0;
pthread_t Inputs;
//order: pointer to handle, Pointer to thread output, pointer to function, pointer to input
pthread_create(&Inputs, NULL, takeInputs, &option);
//Do stuff
if (option == 1) doWorks();
else doNotWorks();
//Order: thread handle, pointer to variable that stores output
pthread_join(Inputs, NULL);
return 0;
}