c++ - 尝试运行 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;
}
解决方案
尝试这个:
int ch = MessageBoxA(GetConsoleWindow(),"InValid First Name","C++Error",MB_OK);
这应该使消息框相对于控制台窗口成为模态,并且不允许任何输入。
推荐阅读
- sql - 在 MSSQL 中转义单引号
- amazon-web-services - AWS Serverless:根据请求或 HTTP API 参数强制执行并行 lambda
- javascript - 使用 id React 将特定对象推入列表
- python - 使用 gunicorn + gevent 启动 Flask 应用程序,监听地址:http://127.0.0.1:8000,但没有响应
- sql - Spring Boot Autoimport import.sql 文件 - 出现“找不到列”错误
- java - 使用 Selenium-Java 在浏览器的正常 UI 模式下运行测试的 Headless chrome
- python - 使用“groupby”而不在组内进行聚合和排序
- r - 使用 R 从 LiDAR 点云制作漂亮的 GIF(使用 lidR 包?)
- php - 用 htaccess 重写图片 url
- entity-framework-core - 在 OnValidSubmit() 期间 ICollection 属性为空