#c
#c
Вопрос:
Я создаю систему управления библиотеками на C .Моя проблема заключается в том, что всякий раз, когда я вызываю функцию-член getFName(), и если пользователь вводит неправильное first_name (содержащее 123,% @ и т.д.), функция Validate () возвращает true и MessageBoxA()(в заголовочном файле windows.h) будет вызван, но у меня есть две проблемы :
1) Если я нажму клавишу Ввода, MessageBox должен исчезнуть, но это невозможно.Для этого требуется щелкнуть мышью по кнопке OK. Как использовать клавишу ввода в этой проблеме вместо щелчка мыши?
2) Если пользователь нажмет любую буквенно-цифровую клавишу, то это будет считаться следующим first_name при наличии MessageBox.
Мой ожидаемый результат заключается в том, что если отображается MessageBox, то пользователю не должно быть разрешено вводить first_name, пока он не нажмет кнопку OK в функции MessageBox ().
void Person :: getFName()
{
Again :
cout<<endl<<"Enter Your First Name : ";
getline(cin,F_Name);
if(Validate(F_Name))
{
int ch = MessageBoxA(NULL,"InValid First Name","C Error",MB_OK);
goto Again;
}
Ответ №1:
Попробуйте это:
int ch = MessageBoxA(GetConsoleWindow(),"InValid First Name","C Error",MB_OK);
Это должно сделать окно сообщения модальным по отношению к окну консоли и не допускать ввода в него каких-либо данных.
Комментарии:
1. Получаемая ошибка GetConsoleWindow() не была объявлена в этой области
2. @HarshJoshi, это странно, он должен быть там до тех пор, пока вы включили
Windows.h
, что, я полагаю, вы и сделали, поскольку используетеMessageBoxA
.3. Да, я включил файл #include <windows.h>
4. @HarshJoshi, попробуй включить
Wincon.h
.5. @HarshJoshi, попробуй добавить
#define _WIN32_WINNT 0x0500
перед включениемWindows.h
.