VCでプログラミングをしています。1VCでプログラミングをしています。基本的なことなのですが質問があります。1._T()を使ったコードでマルチバイドでコンパイルしてもエラーになりません。APIのMessageBoxAあるいはMessageBoxWが最終的に呼ばれると思います。UNICODEなのでしょうか?4.仮にプログラムから直接MessageBoxWを呼ぶとき、マルチバイトでコンパイルして引数がUNICODEでないマルチバイトを渡したとき、どうやってMessageBoxWはUNICODEとして扱うのでしょうか?コンパイルエラーならずに正しく実行できるようです。以上、よろしくお願いします。有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。14:30:30満足34pt1._T()を使ったコードでマルチバイドでコンパイルしてもエラーになりません。見れば分かると思います。時は「L"abc"」、マルチバイト時は「"abc"」に展開されます。APIのMessageBoxAあるいはMessageBoxWが最終的に呼ばれると思います。どちらを呼ぶかはコンパイルあるいはリンクした際に決まるのでしょうか?コンパイル時です。このように書かれています。UNICODEなのでしょうか?同じと考えて良いです。このようになっています。同じ定義になっています。4.仮にプログラムから直接MessageBoxWを呼ぶとき、マルチバイトでコンパイルして引数がUNICODEでないマルチバイトを渡したとき、どうやってMessageBoxWはUNICODEとして扱うのでしょうか?コンパイルエラーならずに正しく実行できるようです。これは実際に試したことが無いので、今、「へぇ~」って思っています(^^;。されているかどうか(プロジェクトの設定がユニコードになっているかどうか)によって、ユニコードかマルチバイトかが決まります。自体はプロジェクトの設定がマルチバイトの時でも問題ありません。型やそのポインタを受け取る関数の引数としているとコンパイルエラーが出るはずです。defineされているかどうか(プロジェクト設定でUNICODEになっているかどうか)によってコンパイル時に決定されます。3:LP~系とP~系はその後が同じ名前なら同じです。LP~系が圧倒的に多く使われるのでややこしいですね。4:そのコードを見てみないとなんとも言えませんね。MB_OK);なんてコードだとプロジェクトの設定がマルチバイトでもコンパイルは通りますね。MultiByteToWideChar関数を使用して自分でそのマルチバイト文字列をUNICODE文字列に変換する必要があります。13:51:284番目の質問について追加で質問させてください。仮にDLLとEXEを作ります。18時間前Youtubeのショート動画で、こんなのありますか。エクセルやワードでの、便利な操作を紹介したものです。