

以下のコードで文字をウインドウに表示させようとしているのですが  
引数の互換性が無いとエラーメッセージが表示され動きません、  
言語もDXライブラリも触り始めた初心者なので教えていただきたいです

[code]

    #include "DxLib.h"
    
    
    int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) {
        ChangeWindowMode(true);//ウインドウ化
        DxLib_Init();   // DXライブラリ初期化処理
        SetDrawScreen(DX_SCREEN_BACK);//裏画面描画設定
    
    
        //
        while(ScreenFlip() == 0  && ProcessMessage() == 0 && ClearDrawScreen() == 0){
    
                   //ここでエラーがでる
            DrawFormatString(0, 0, GetColor(255,255,255), "こんにちは"); // 文字を描画する
    
        }
    
    
        DxLib_End();    // DXライブラリ終了処理
        return 0;
    }
    
[/code]


CC BY-SA 4.0
2020-04-30T08:36:53.667
66143
2020-04-30T09:54:21.083
2020-04-30T08:44:05.797
4236
39894
question
c
型 の引数は型 のパラメーターと互換性がありません


すみません、プロパティの文字セットを、  
マルチバイト文字セットに変更したら  
エラーが出ることなく動作させる事が出来ました


CC BY-SA 4.0
2020-04-30T08:48:46.787
66144
2020-04-30T08:48:46.787
39895
66143
answer


自分で対策されたように、これは`文字セット`の指定に依存します。

もう少し汎用性を持たせるなら、文字列定数`"こんにちは"`を`_T( )`または`_TEXT( )`で囲んでください。

[code]

    DrawFormatString(0, 0, GetColor(255,255,255), _T("こんにちは")); // 文字を描画する
    
[/code]

こうすることで`文字セット`の指定をデフォルトの`Unicode 文字セットを使用する`でも、変更した`マルチ
バイト文字セットを使用する`でも問題無くコンパイルすることが出来ます。

もう一方で`文字セット`の指定を変えずにUnicodeだけで使うなら最初の`"`の前に`L`を付けて`L"こんにちは"`とすることも出来ます。

以下のあたりを参考に：  
[Unicode プログラミングの要約](https://docs.microsoft.com/ja-jp/cpp/text/unicode-
programming-summary?view=vs-2019)  
[tchar.h における汎用テキストのマッピング](https://docs.microsoft.com/ja-jp/cpp/text/generic-
text-mappings-in-tchar-h?view=vs-2019)

上記を含む一連の説明の先頭ページ  
[Visual C++ のテキストと文字列](https://docs.microsoft.com/ja-jp/cpp/text/text-and-
strings-in-visual-cpp?view=vs-2019)


CC BY-SA 4.0
2020-04-30T09:54:21.083
66149
2020-04-30T09:54:21.083
26370
66143
answer