1. ホーム
  2. c++

[解決済み] WinMainとwWinMainの違いについて

2022-02-14 22:57:32

質問

WinmainはlpCmdLineパラメータにchar*を取るのに対し、wWinMainはwchar_t*を取るという違いだけです。

Windows XPで、アプリケーションのエントリーがWinMainの場合、WindowsはコマンドラインをUnicodeからAnsiに変換してアプリケーションに渡しているのでしょうか?

コマンドラインのパラメータがユニコードでなければならない場合(例えば、ユニコードのファイル名、変換するといくつかの文字が欠落する)、エントリー関数としてwWinMainを使用しなければならないということでしょうか。

どのように解決するのですか?

<ブロッククオート

Windows XPで、アプリケーションのエントリーがWinMainの場合、WindowsはコマンドラインをUnicodeからAnsiに変換してアプリケーションに渡すのでしょうか?

はい、そうです。

コマンドラインのパラメータがユニコードでなければならない場合(例えば、ユニコードのファイル名、変換するといくつかの文字が欠落する)、エントリ関数としてwWinMainを使用しなければならないということでしょうか?

プログラムへのユニコード引数を正しく処理したいのであれば、そうすべきです。

へのドキュメントは MSDN の WinMain() も同意見です。

ただし、GetCommandLineW を使用して、Unicode で具体的にコマンドラインを取得することもできます。