2

私はwin32c++アプリケーションでwinsock2を使用しています。WSAGetLastError()を呼び出すことで取得できるネットワークエラーをMessageBoxで表示します。これどうやってするの?FormatMessageを見ましたが、使い方がわかりませんでした

4

3 に答える 3

4

たとえば、次の方法でシステムのメッセージテーブルのエラーコードを検索し、フォーマットされたメッセージをLPTSTR Errorバッファに配置します。

// Create a reliable, stream socket using TCP.

if ((sockClient = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0)
{
 DWORD err = GetLastError();
 LPTSTR Error = 0;

if(FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
       NULL,
       err,
       0,
       (LPTSTR)&Error,
       0,
       NULL) == 0)
  {
     // Failed in translating the error.
  }
}
于 2011-01-08T10:55:13.663 に答える
1

こんにちは、このコードを使用できますhttp://www.codeproject.com/KB/tips/formatmessage.aspx

于 2011-01-08T10:28:40.337 に答える
1

C ++ 11では、次を使用できます。

std::system_category().message(WSAGetLastError());

メッセージをstd::stringとして取得し、厄介なバッファをすべて回避します:)

関数のドキュメントと、それを使用して例外をスローするこの回答を参照してください。

于 2019-07-01T18:38:59.573 に答える