私は、Windows-MobileMAPIを介して受信メールとSMSを処理するプログラムを開発しています。コードは基本的に次のようになります。
ulBodyProp = PR_BODY_A;
hr = piMessage->OpenProperty(ulBodyProp, NULL, STGM_READ, 0, (LPUNKNOWN*)&piStream);
if (hr == S_OK)
{
// ... get body size in bytes ...
STATSTG statstg;
piStream->Stat(&statstg, 0);
ULONG cbBody = statstg.cbSize.LowPart;
// ... allocate memory for the buffer ...
BYTE* pszBodyInBytes = NULL;
boost::scoped_array<BYTE> szBodyInBytesPtr(pszBodyInBytes = new BYTE[cbBody+2]);
// ... read body into the pszBodyInBytes ...
}
それはうまくいき、私はメッセージ本文を持っています。問題は、この本体がマルチバイトエンコードされており、Unicode文字列を返す必要があることです。:: MultiByteToWideChar()関数を使用する必要があると思いますが、どのコードページを適用すればよいのでしょうか。CP_UTF8の使用は、UTF8に含まれていない可能性があるため、単純です。CP_ACPの使用は、うまくいくこともありますが、うまくいかないこともあります。したがって、私の質問は、メッセージコードページに関する情報を取得するにはどうすればよいかということです。MAPIはそのための機能を提供しますか?または、MultiByteToWideChar()以外のマルチバイト文字列をデコードする方法はありますか?
ありがとう!