最も重要な部分は、エラーを理解することです。が何であるかを知っています。const char [4]
簡単な部分ですが、 はどうLPCTSTR
ですか?
Microsoftのドキュメントによると:
LPCWSTR
UNICODE が定義されている場合、そうLPCSTR
でない場合。詳細については、「文字列の Windows データ型」を参照してください。
そして、次のLPCWSTR
とおりです。
16 ビット Unicode 文字の null で終わる定数文字列へのポインター。詳細については、フォントで使用される文字セットを参照してください。
まず、プログラムを使用しているエンコーディングのタイプを確認する必要があります。を使用しているように見えるので、最終的にs への const ポインター (「OFF」定数) を へのUNICODE
const ポインターに変換しようとしていますが、(論理的に) 変換は許可されていません。char
wchar_t
次に、正しい文字列タイプを選択できます。UNICODE が定義されている場合は、#define
ワイド文字列にする必要があります。
// Note the L
#define METHOD_ONE L"OFF"
次のように定義することもできます。
#ifdef UNICODE
#define METHOD_ONE L"OFF"
#else
#define METHOD_ONE "OFF"
#endif
または_T
、Roman R によって提案されたマクロを使用します。このマクロが行うのはL
、テキストにプレフィックスを追加することだけです。
#ifdef UNICODE
#define _T(x) L ##x
#else
#define _T(x) x
#endif
最後に、使用している文字列の種類を認識しておく必要があります。#define
しかし、Microsoft はとのあいまいなチェーンを使用してそれを隠していますtypedef
。