データ ソースから日本語の文字を取得しており、このデータを XLOPER で Excel に返したいと考えています。日本語版の Excel 2003 を使用しています (したがって、XLOPER12 ではなく XLOPER です)。
wchar_t* pszW = OLE2W(bstrResult); //I have the data I am trying to copy in a CComBSTR
ULONG ulSize = ::WideCharToMultiByte( CP_THREAD_ACP, 0, pszW, -1, NULL, 0, NULL, NULL );
if ( ulSize )
{
char* tmp = new char[ulSize + 1];
tmp[ulSize]='\0';
::WideCharToMultiByte( CP_THREAD_ACP, 0, pszW, -1, LPSTR( tmp ), ulSize, NULL, NULL );
pszReturn = tmp;
}
wchar_t* pwszOut = new wchar_t[bstrResult.Length () + 1];
//now turn it back to test that that the correct code page was used. For debugging purposes only!
::MultiByteToWideChar (CP_THREAD_ACP,0, LPSTR(pszReturn),-1,pwszOut,bstrResult.Length () + 1);
//pwszOut and bstrResult look the same in the debugger
delete [] pwszOut;
パラメータ pszReturn は XLOPER に割り当てられます。私が抱えている問題は、「アフリカの女王」がExcelで「ƒAƒtƒŠƒJ‚Ì—‰¤」と表示されることです。
コードページを手動で 932 にすると CP_THREAD_ACP と同じ結果になるので、その部分は正しいと思います。
どんな助けでも大歓迎です。