Пытаюсь запустить MessageBoxA() (#включить метод другим способом в c

#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 .