消息框操作系统。独立[关闭]

Posted

技术标签:

【中文标题】消息框操作系统。独立[关闭]【英文标题】:MessageBox OS. Independent [closed] 【发布时间】:2013-01-08 23:14:26 【问题描述】:

我想创建一个 Assert 函数,它在新窗口中显示一条消息,而无需打开控制台。该函数需要独立于操作系统,并且尽可能不使用 c++ 外部库。

#include <string>
#include <sstream>
#ifdef WIN32
#include <windows.h>    // include windows header, for Windows Based Sistems.
#else
// ...
#endif

void Assert (bool cond,const char* file,int line,const char* desc)

      if (cond) return;  // No Assertion.
#ifdef WIN32
      // Use MessageBox function to display the information.
      // For Example ...
      std::stringstream st; 
      st << "There Was An Error At Runtime ! \n";
      st << "File: " << file << "\n";
      st << "Line: " << line << "\n";
      st << "Description: " << desc << "\n";
      st << "Do You Want To Continue Running the Application?\n";
      if (MessageBox (NULL,"Unexpected Error", str.str ().c_str (), MB_YESNO) == IDNO)
          exit (-1);
#else
      // Do Something, but in Unix Base Systems.
#endif

#define assert(condition,description)  \
            __assert__ (condition,__FILE__,__LINE__,description)

需要 C++ 代码在其他操作系统中输出 MessageBox

【问题讨论】:

定义其他操作系统——有很多 你为什么不在#ifdef WIN32 的#else 后面写代码呢?剩下的就简单多了,我们不用猜了。 【参考方案1】:

C++ 标准不包括 GUI 操作。您需要使用为所需平台提供 GUI 服务的外部库。

所以你的要求是不可能的。对不起。

【讨论】:

我应该使用哪些库? GTK, wkWidgets ?仅打印 MessageBox 的最简单库? @VictorRuiz 对话框不是问题,问题是它的阻塞行为 @VictorRuiz 因为你只想要一个消息框,所以使用每个系统上的默认值。调出一个消息框应该不会太难。请注意,在 Mac OS X 上,您需要用 Objective C 而不是 C++ 编写 GUI 代码。但是,您的用例似乎很奇怪。如果您的应用程序不是 GUI 应用程序,为什么要打开消息框?没有任何意义。

以上是关于消息框操作系统。独立[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Playwright 关闭弹出消息框?

python selenium 处理JS弹出对话框

web自动化 -- 消息提示框处理 (alertconfirmprompt)

元素定位:selenium消息框处理 (alertconfirmprompt)

检查系统声音是打开还是关闭

js对话框弹窗