Я пытаюсь создать функцию, которая отображает информацию на различных страницах, и использую F5 для выбора страницы, PGDN для прокрутки вниз страницы, PGUP для прокрутки вверх страницы и ES C для выхода. Всякий раз, когда я тестирую этот код, он автоматически достигает ES C, хотя я никогда не нажимал его. Если бы кто-то мог помочь мне сделать это правильно, я был бы признателен. При первом использовании GetKeyState (), поэтому, если я использую его неправильно, дайте мне знать!
void repListing(int bookCount, bookType *bookArray[BOOKS]){
bool toContinue = true;
bool newPage = true;
int pgCount = 1;
int maxPageCount = bookCount / 10;
bool keyPressed = false;
int desiredPage = 0;
while(toContinue){
if (newPage){
cout << setw(48) << "Serendipity Booksellers" << endl;
cout << setw(38) << "Report Listing" << endl;
cout << "Date: 04/14/2020 Page: " << pgCount << " of " << maxPageCount << " Database Size: 20 Current Book Count: " << bookCount << endl;
cout << "" << endl;
cout << "Title" << setw(10) << "ISBN" << setw(20) << "AUTHOR" << setw(18) << "PUBLISHER" << setw(15) << "DATE ADDED BY" << setw(15) << "QTY" << setw(15) << "WHOLESALE" << setw(15) << "RETAIL" << endl;
cout << "" << endl;
cout << "__________________________________________________________________________________________________________________________________" << endl;
for (int i = 0 + (pgCount-1)*10; i < pgCount * 10; i++){
if ((*bookArray[i]).bookTitle.length() >= 20){
cout << ((*bookArray[i]).bookTitle).substr(0, 20) << setw(10) << (*bookArray[i]).bookISBN << setw(10) << (*bookArray[i]).bookAuthor << setw(10) << (*bookArray[i]).bookPublisher << setw(10) << (*bookArray[i]).dateAdded
<< setw(10) << (*bookArray[i]).qtyOnHand << setw(10) << (*bookArray[i]).bookWholesale << setw(10) << (*bookArray[i]).bookRetail << endl;
cout << "" << endl;
}else {
cout << ((*bookArray[i]).bookTitle).substr(0, 20) << setw(10) << (*bookArray[i]).bookISBN << setw(10) << (*bookArray[i]).bookAuthor << setw(10) << (*bookArray[i]).bookPublisher << setw(10) << (*bookArray[i]).dateAdded
<< setw(10) << (*bookArray[i]).qtyOnHand << setw(10) << (*bookArray[i]).bookWholesale << setw(10) << (*bookArray[i]).bookRetail << endl;
cout << "" << endl;
}
}
newPage = false;
keyPressed = false;
}
while (!keyPressed){
cout << "Keys: F5 to choose a page, ESC to exit, PGUP to go up, PGDN to go down" << endl;
cout << "Enter a key: " << endl;
if (GetKeyState(VK_NEXT)){
cout << "pgdwn" << endl;
newPage = true;
keyPressed = true;
if (pgCount == maxPageCount) pgCount = 1;
else pgCount++;
}else if (GetKeyState(VK_PRIOR)){
cout << "pgup" << endl;
newPage = true;
keyPressed = true;
if (pgCount == 1) pgCount = maxPageCount;
else pgCount--;
}else if(GetKeyState(VK_F5)){
cout << "reached F5" << endl;
keyPressed = true;
cout << "What page would you like to go to? (1-" << maxPageCount << "): ";
bool validInput = false;
while(!validInput){
cin >> desiredPage;
if (cin.good() && pgCount <= maxPageCount && pgCount >= 1){
validInput = true;
} else{
cout << "" << endl;
cout << setw(63) << "Please enter a number in the range 1-" << maxPageCount << "." << endl;
cin.clear();
cin.ignore(maxInt, '\n');
system("PAUSE");
system("cls");
cout << "What page would you like to go to? (1-" << maxPageCount << "): ";
}
}
pgCount = desiredPage;
newPage = true;
}else if (GetKeyState(VK_ESCAPE)){
cout << "reached ESC" << endl;
toContinue = false;
keyPressed = true;
}
}
cout << "keyPressed: " << keyPressed << " newPage: " << newPage << " toContinue: " << toContinue << endl;
}
}