-1

コンソールを開かずに新しいウィンドウにメッセージを表示する Assert 関数を作成したいと考えています。関数は OS に依存しない必要があり、可能であれば 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)

他の OS で MessageBox を出力するには C++ コードが必要

4

1 に答える 1

1

C++ 標準には、GUI 操作は含まれていません。必要なプラットフォームに GUI サービスを提供する外部ライブラリを利用する必要があります。

だからあなたが求めるものは不可能です。ごめん。

于 2013-01-08T23:17:46.030 に答える