私はopenGLを含むwin32c/cppプロジェクトに取り組んでいます。私は始めたばかりで、標準のwin32プログラムがどのように機能するかについていくつかの基本的な質問がありました。チュートリアルに従って、winmainに新しいウィンドウを作成させ、ウィンドウのopenGLを有効にしてから、メインループに入ります。メッセージがある場合はプログラムがメッセージを処理し、そうでない場合はプログラムがopenGLアニメーションの描画に進みます。その後、openGLをシャットダウンしてウィンドウを破棄します。私はここで何が起こっているかについてあまり混乱していませんが、これは私が迷子になる場所です:
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
switch (message)
{
case WM_CREATE:
return 0;
case WM_CLOSE:
PostQuitMessage( 0 );
return 0;
case WM_DESTROY:
return 0;
case WM_KEYDOWN:
switch ( wParam )
{
case VK_ESCAPE:
PostQuitMessage(0);
return 0;
}
return 0;
default:
return DefWindowProc( hWnd, message, wParam, lParam );
}
私はwinmainで、この関数を次の方法でウィンドウクラスに登録していることを確認しています。
wc.lpfnWndProc = WndProc;
このプロセスはどの程度正確に機能しますか?誰かがパイプラインを私に説明できますか?winmainメソッドが実行されると、openglアニメーションの描画に進みますが、キーが押されるとすぐにメッセージ処理に入ります...そして何ですか?私のwinmainメソッドはWndProcメソッドとどのように通信しますか?マシンの観点から実際に何が起こっているのでしょうか?