多くのウィンドウを開くアプリケーションがあります。wglCreateContext() が 0 を返し、GetLastError() が 0xc007001f を返すことがあります。
Intel グラフィック カードでのみ発生します。
誰かがそれを見ましたか?誰かがそれが何であるか知っていますか?
エラー コードをその部分に分解できます。0xC は致命的なエラーになり、007 は winapi であるファシリティ コード 7 を生成します。これにより、最後の 4 桁が Windows エラー 31 になります。
//
// MessageId: ERROR_GEN_FAILURE
//
// MessageText:
//
// A device attached to the system is not functioning.
//
#define ERROR_GEN_FAILURE 31L
正しいデバイス コンテキスト ハンドルを wglCreateContext() に渡したとすると、これは非常に基本的なデバイス ドライバーの問題になります。通常、ビデオ ドライバーの更新が必要な種類で、適切な種類の OpenGL ドライバーがインストールされていることを確認します。もちろん、修正するためにできることは何もありません。これは、ユーザーが取り組む必要がある問題です。
また、FormatMessage を使用して、エラーの説明の文字列を取得することもできます。
DWORD err = GetLastError();
char* msg;
FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_ALLOCATE_BUFFER, 0, err, 0, (LPCSTR)&msg, 0, 0);
MessageBoxA(0, msg, "Error", 0);
LocalFree(msg);
エラー0xc007001fはSetPixelFormat()
失敗したときだと思います。つまり、そのカードでサポートされていないピクセル形式の機能を使用しようとしています。私が間違っていなければ、Intel グラフィックス カードは OpenGL をほとんどサポートしていません ([編集: 2.1] のみ)。