首页 > 解决方案 > 尝试运行 MessageBoxA()(#includec++中不同方式的方法

问题描述

我正在用 C++ 制作图书馆管理系统。我的问题是每当我调用 getFName() 成员函数时,如果用户输入不正确的 first_name(包含 123、%@ 等),Validate() 函数将返回 true 和 MessageBoxA()(在 windows. h头文件)将被调用,但我有两个问题:

1)如果我按 Enter 键,那么 MessageBox 应该消失但它不能。它需要鼠标单击 OK 按钮。如何在此问题中使用 Enter 键而不是鼠标单击?

2) 如果用户按下任何字母数字键,则在 MessageBox 存在的情况下,它将计为下一个 first_name。

我的预期输出是,如果显示 MessageBox,则用户不应该输入 first_name,直到它按下 MessageBox() 函数中的 OK 按钮。

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;

}

标签: c++

解决方案


尝试这个:

int ch = MessageBoxA(GetConsoleWindow(),"InValid First Name","C++Error",MB_OK);

这应该使消息框相对于控制台窗口成为模态,并且不允许任何输入。


推荐阅读