Czyszczenie wejścia konsoli funkcją FlushConsoleInputBuffer
Ostatnio zmodyfikowano 2015-01-23 17:00
czosnek17 Temat założony przez niniejszego użytkownika |
Czyszczenie wejścia konsoli funkcją FlushConsoleInputBuffer » 2015-01-22 21:07:19 W skrócie gdy program dojdzie do cin>>, to w konsoli pojawi się to, co było wpisywane podczas spania. Myślę, że rozwiązanie leży w WinAPI. Ale nic nie znalazłem. //dobra, nie działała mi funkcja FlushConsoleInputBuffer i dowiedziałem się, że Uchwyt do bufora wejściowego konsoli. Uchwyt musi mieć dostęp GENERIC_WRITE | http://cpp0x.pl/dokumentacja/WinAPI/FlushConsoleInputBuffer/1566Jak mu dać ten dostęp? |
|
Fireho |
» 2015-01-22 21:20:33 Może po prostu użyj cin.clear()? |
|
czosnek17 Temat założony przez niniejszego użytkownika |
» 2015-01-22 21:28:05 cin.clear() jest od strumienia C++usowego, a mi chodzi o tekst zalegający na wejściu konsoli. |
|
pekfos |
» 2015-01-22 21:54:41 |
|
czosnek17 Temat założony przez niniejszego użytkownika |
» 2015-01-22 22:07:33 To nie wiem co się dzieje. #include <iostream> #if _WIN32_WINNT < 0x0500 #undef _WIN32_WINNT #define _WIN32_WINNT 0x0500 #endif #include <windows.h> using namespace std;
int main() { int x; Sleep( 2000 ); if( FlushConsoleInputBuffer( GetConsoleWindow() ) ) cout << "ok\n"; else cout << "error\n"; cout << GetLastError() << endl; cin >> x; return 0; }
Jest błąd a wejście nie znika. |
|
pekfos |
» 2015-01-22 22:12:38 Masz podać uchwyt z GetStdHandle(), a nie uchwyt okna. |
|
czosnek17 Temat założony przez niniejszego użytkownika |
» 2015-01-23 17:00:55 Trzeba było tak FlushConsoleInputBuffer( GetStdHandle( STD_INPUT_HANDLE ) );
Dzięki, zamykam. |
|
« 1 » |