API を使用して Windows GUI を開発する場合、なぜウィンドウ クラスを登録する必要があるのでしょうか。そのコンセプトは何ですか?
Charles Petzold によるProgramming Windowsの最初の 3 つの章を既に読みましたが、クラスを明示的に登録する目的は何なのか、まだ疑問に思っています。なぜ明示的にやりたいのですか?たとえば、CreateWindow() (または CreateWindowEx()) 関数でバックグラウンドで実行されないのはなぜですか? つまり、RegisterClass() が実行するコードが CreateWindow() 内で実行されないのはなぜですか? または、CreateWindow() が RegisterClass() 自体を呼び出さないのはなぜですか?
また、MSDN のドキュメントを読んでいて、RegisterClass() 関数が WNDCLASS 構造体を埋めることによって、ウィンドウ プロシージャをウィンドウ クラスに関連付けることを知っています。これが OS からのメッセージを処理する関数であることは知っていますが、なぜその関数 (WinProc の関数) を CreateWindow() とは別の関数内のクラスに登録する必要があるのでしょうか?
CreateWindow() 関数が存在する理由と、作成されたウィンドウが自動的に表示されない理由を理解できます。これは、ShowWindow() 関数の目的も理解していることを意味します。
プログラマーが必要なときにクラスを登録できるようにするために、この動作には正当な理由があるに違いないと確信していますが、私はそれらの理由を見落としているだけです。
私は Windows API を使用した GUI 開発に非常に慣れていないことを覚えておいてください。Windows API とは異なる MATLAB でいくつかの GUI を作成しましたが、Windows の哲学、特にコールバック関数の目的を理解することができました。この情報が役立つかどうかはわかりませんが、類推する必要がある場合は、私のゲストになってください.