現在のコードページには存在しないものはどれですか? (デフォルトで)、UsedDefaultCharは!= FALSEになります。
Windows-1252はおそらく最も一般的なコードページであり、これらの文字のほとんどはユニコードでmap to the same valueです。
例えば、それはおそらく、あなたの現在のコードページがあるため、有効な狭い文字にマッピングしないであろうものは何でもに存在しないΩ (ohm)してください:
BOOL fUsedDefaultChar=FALSE;
DWORD dwSize;
char myOutStr[MAX_PATH];
WCHAR lpszW[10]=L"Hello";
*lpszW=0x2126; //ohm sign, you could also use the \u2126 syntax if your compiler supports it.
dwSize = WideCharToMultiByte(CP_ACP, 0, lpszW, -1, myOutStr ,MAX_PATH, NULL, &fUsedDefaultChar);
printf("%d %s\n",fUsedDefaultChar,myOutStr); //This prints "1 ?ello" on my system
アンダーズさん、ありがとうございました。私が文字列L "abc \ x0100"を渡すと、私はまだfUsedDefaultChar == trueを取得します。正確な範囲は何ですか? – tvr
@tvr:変換先のコードページに依存するので正確な範囲はありませんが、<= 127の値は安全です。 – Anders