wmain の使用
Visual C++は、wmain 関数の定義と、Unicode アプリケーションへのワイド文字の引数の受け渡しをサポートしています。 wmain に渡す仮引数は、main
に準拠した形式を使用して宣言します。 さらに、ワイド文字の引数と、必要であればワイド文字環境ポインターもプログラムに渡すことができます。 wmain の引数 argv
と envp
の型は wchar_t*
です。 次に例を示します。
wmain( int argc, wchar_t *argv[ ], wchar_t *envp[ ] )
Note
MFC Unicode アプリケーションでは、エントリ ポイントとして wWinMain
を使用します。 この場合、CWinApp::m_lpCmdLine
は Unicode 文字列です。 /ENTRY リンカー オプションを使用して、wWinMainCRTStartup
を設定してください。
プログラムが main 関数を使用している場合、マルチバイト文字環境は、プログラムの起動時にランタイム ライブラリが作成します。 マルチバイト文字環境で使われるワイド文字のコピーは、必要に応じて作成されます (たとえば、_wgetenv
関数や _wputenv
関数が呼び出されたとき)。 _wputenv
を最初に呼び出すとき、または MBCS 環境が既に存在する場合に _wgetenv
を最初に呼び出すとき、対応するワイド文字列環境が作成されます。 その後、環境は _wenviron
グローバル変数によって参照されます。これは _environ
グローバル変数のワイド文字バージョンです。 この時点までで、2 つの環境のコピー (MBCS および Unicode) が同時に存在していることになるわけですが、両方ともプログラムが消滅するまでランタイム システムによって保持されます。
プログラムが wmain 関数を使っている場合は、ワイド文字環境がプログラムの起動時に作成され、また _wenviron
グローバル変数によって環境のアドレスが示されます。 MBCS (ASCII) 環境は、_putenv
または getenv
を初めて呼び出したときに作成され、_environ
グローバル変数によってアドレスが示されます。