01/10/2018, 01:06

Không xóa được bộ đệm bàn phím khi sử dụng thư viện windows.h trong c++

chào các bạn
mình cần dùng thư viện windows.h để sử dụng hàm
GetAsyncKeyState(VK_DOWN)
GetAsyncKeyState(VK_UP)
GetAsyncKeyState(VK_RETURN)

nhưng sau khi dung các hàm này, trong bộ đệm máy tính sẽ chưa các phím nhập vào
giống như khi ta nhập 1 số xong bấm enter
sau đó nhập 1 xâu mà k xóa bộ đệm thì kí tự enter sẽ được nhận vào xâu

mình dùng các hàm xóa bộ đệm như
fflush(stdin);
cin.clear();
cin.ignore();

string temp;
getline(cin, temp);

trước khi nhập xâu mới như vẫn không được, xâu mới vẫn nhận kí tự đã được lưu trong bộ đệm trước đó do sử dụng các phím mũi tên trên
giờ phải làm thế nào để xóa được bộ đệm do các hàm trong windows.h sinh ra?
xin cam on

HelloWorld viết 03:17 ngày 01/10/2018

help help
help help

viết 03:17 ngày 01/10/2018

thử cái này
FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE));

stackoverflow.com
smearedblackink

GetAsyncKeyState creating problems with cin

c++, windows, visual-c++, console-application
asked by smearedblackink on 11:58PM - 11 Dec 11

ko được thì bó tay.com

HelloWorld viết 03:07 ngày 01/10/2018

vẫn k được , sau khi mình dùng các phím mũi tên để di chuyển để dòng cần bấm enter thì bộ đệm nó lưu lại
các hàm xóa bộ đệm kia k xóa được,
nên khi nhập dữ liệu cho 1 biến string mới
thì nó bị lỗi ghi nhận luôn kí tự trong bộ đệm vào biến string
mà chỉ bị lỗi ở lần nhầm đầu tiên
từ lần thứ 2 thì k bị

HelloWorld viết 03:07 ngày 01/10/2018

mình kết hợp các hàm
FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE));
string rac;
getline(cin, rac);

thì lại được
nhưng được có thể là do số lần bấm phím mũi tên ít

viết 03:15 ngày 01/10/2018

chịu. Muốn được thì chắc phải xài GetAsyncKeyState. gì thế cin luôn, nghĩa là bấm 1 phím thì tương đương thêm 1 ký tự vào chuỗi input…

HelloWorld viết 03:20 ngày 01/10/2018

nãy mình dùng
FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE));
string rac;
getline(cin, rac);
được nhưng mà giờ lại k thể quay lại sử dụng menu tiếp
mà nó lại bắt nhập tiếp phần tử khác :V

Bài liên quan
0