Last Updated 2011/04/17 |
Programming Tips Visual C++ MFC CString(文字列) | 索 引 |
BSTR変換
2004/03/23
ANSI 文字列を BSTR に変換するには, 1. MultiByteToWideChar() で Unicode 化した時のサイズ(文字数)を計算 2. SysAllocStringLen() で文字数分の BSTR を確保 3. あらためて MultiByteToWideChar() にて,SysAllocStringLen() で確保BSTR 上に ANSI->Unicode 変換した文字列を設定 という手順となる. MFC であれば,マクロが用意されている.
SysReAllocString() はコピー元として OLECHAR * を引数とする.これは UNICODE 文字列である.
CString であれば CString::AllocSysString() や CString::SetSysString() で変換できる. 上記の SysAllocStringByteLen() では BSTR にはなってはいるが,バイナリイメージは前後の細かい部分を除くと元の ANSI と変化はない. (BSTR は必ずしも文字列として意味のある OLECHAR 列を含む必要はない) また,BSTR から CString に変換するには,AfxBSTR2CString() を使用する. AfxPriv2.h に void AFXAPI AfxBSTR2CString(CString* pStr, BSTR bstr); が存在する. 参照 VC++から文字列を渡す方法 |
|