17

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

要するに、コンソールと GUI アプリケーションの起動は次のように異なると思います。

コンソール アプリケーション: C ランタイム --> 'main' 関数 (ハンドコーディング)

GUI アプリケーション: C ランタイム --> 'main' 関数 (コンパイラ生成) --> 'WinMain' 関数 (ハンドコーディング)

この理解を検証し、「メイン」関数だけで (つまり、「WinMain」を記述する必要なく) Windows GUI をハンドコーディングする方法を見つけたいと思います。

4

3 に答える 3

6

それは逆に機能します。実際のエントリ ポイントを保持するコンパイラに付属する、静的にリンクされたオブジェクト ファイルがあります。そのエントリ ポイントは初期化を行い、エントリ ポイント (つまり WinMain) を呼び出します。

その静的部分が呼び出すと予想されるものは、微調整できる場合があります。たとえば、Visual Studio では、リンカー設定にエントリ ポイント名のフィールドがあります。

于 2009-02-19T10:05:43.257 に答える