Windowsデスクトップアプリケーション(1-2-1-5 th)WinMain:アプリケーションエントリポイント


各Windowsプログラムには、WinMainまたはwWinMainというエントリ関数が含まれています.これはwWinMainのサインです.
int WINAPI wWinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PWSTR pCmdLine,int nCmdShow);

この4つのパラメータは次のとおりです.
  • hInstanceは、いわゆる「1つのインスタンスのハンドル」または「1つのモジュールのハンドル」である.メモリにロードすると、オペレーティングシステムはこの値を使用して実行可能ファイル(EXE)を識別します.一部のWindows機能では、ロードアイコンやビットマップなどのインスタンスハンドルが必要です.
  • hPrevInstanceは意味がありません.16ビットWindowsで使用されていますが、現在は常にゼロです.
  • pCmdLineにはUnicode文字列としてのコマンドラインパラメータが含まれています.
  • nCmdShowは、メインアプリケーションウィンドウが最小化されているか、最大化されているか、正常に表示されているかを示すフラグです.

  • この関数はint値を返します.オペレーティングシステムでは、戻り値は使用されませんが、戻り値を使用して、作成した他のプログラムにステータスコードを渡すことができます.WINAPIは呼び出し規則です.呼び出し規則は、関数が呼び出し元からパラメータを受信する方法を定義します.たとえば、スタックにパラメータが表示される順序を定義します.図に示すようにwWinMain関数を宣言してください.WinMain関数はwWinMain関数と同じですが、コマンドラインパラメータはANSI文字列として渡されます.Unicodeバージョンが優先です.プログラムをUnicodeにコンパイルしても、ANSI WinMain関数を使用できます.コマンドラインパラメータのUnicodeコピーを取得するには、GetCommandLine関数を呼び出します.この関数は、単一の文字列のすべてのパラメータを返します.パラメータをargv-style配列として使用する場合は、この文字列をCommandLineToArgvWに渡します.コンパイラは、標準的なmain関数ではなくwWinMainを呼び出すことをどのように知っていますか?実際には、Microsoft Cランタイムライブラリ(CRT)は、WinMainまたはwWinMainを呼び出すmainの実装を提供する.注意CRTはmainで追加の仕事をしました.たとえば、wWinMainの前に任意の静的イニシエータが呼び出されます.リンクに異なるエントリ関数を使用するように伝えることができますが、CRTにリンクする場合はデフォルト値を使用します.そうでない場合、CRT初期化コードはスキップされ、結果は予知できません.(たとえば、グローバルオブジェクトは正しく初期化されません.)これは空のWinMain関数です.
    INT WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR lpCmdLine,INT nCmdShow){
        return 0;
    }

    基本的な用語とコード規則をいくつか理解しました.完全なWindowプログラムを作成する準備ができています.次のモジュール1.最初のWindowsプログラムです.
    原文リンク:WinMain:The Application Entry Point
    ディレクトリに戻る