C/C++ で記述された Windows GUI アプリケーションには、(「main」ではなく) エントリ ポイントとして「WinMain」があります。これについての私の理解は、コンパイラが C ランタイムによって呼び出される「メイン」関数を生成するということです。この「main」関数は、GUI に必要な環境をセットアップし、「WinMain」を呼び出します (インスタンス ハンドルなどを指定します)。
要するに、コンソールと GUI アプリケーションの起動は次のように異なると思います。
コンソール アプリケーション: C ランタイム --> 'main' 関数 (ハンドコーディング)
GUI アプリケーション: C ランタイム --> 'main' 関数 (コンパイラ生成) --> 'WinMain' 関数 (ハンドコーディング)
この理解を検証し、「メイン」関数だけで (つまり、「WinMain」を記述する必要なく) Windows GUI をハンドコーディングする方法を見つけたいと思います。