teruk です。
お世話になっています。
Junji Fukuhara さん、こんにちは。
> 福原と申します。
>
> ATL COMベースのアプリケーションの勉強を始めた
> ばかりなのですが、BSTR型ではまってます。
>
>
> サーバーのインタフェースの実装を以下のように
> 記述しています。
>
> STDMETHODIMP Ctest1::get_getbstr(BSTR *pVal)
> {
> // TODO: この位置にインプリメント用のコードを追加してください
> *pVal = m_bstrTest; // BSTR m_bstrTest;
> return S_OK;
> }
>
> クライアント側では以下のように実装しています。
>
> CString strTest = "TEST Test test1";
> p->put_getbstr((unsigned short*)"aaaaaaaaaaaaaaaa");
> p->put_getbstr(strTest);
> p->get_getbstr((unsigned short**)&strTest);
>
> 直接、文字列を渡すと結果は帰ってくるのですが、変数(strTest)を
> 渡すと正常結果が得られません。
CString <---> BSTR を変換する必要があります。
CString->BSTR
CString::AllocSysString
BSTR->CString
AfxBSTR2CString
http://www.geocities.co.jp/SiliconValley/4809/mfc/mfc0600.html
お世話になっています。
Junji Fukuhara さん、こんにちは。
> 福原と申します。
>
> ATL COMベースのアプリケーションの勉強を始めた
> ばかりなのですが、BSTR型ではまってます。
>
>
> サーバーのインタフェースの実装を以下のように
> 記述しています。
>
> STDMETHODIMP Ctest1::get_getbstr(BSTR *pVal)
> {
> // TODO: この位置にインプリメント用のコードを追加してください
> *pVal = m_bstrTest; // BSTR m_bstrTest;
> return S_OK;
> }
>
> クライアント側では以下のように実装しています。
>
> CString strTest = "TEST Test test1";
> p->put_getbstr((unsigned short*)"aaaaaaaaaaaaaaaa");
> p->put_getbstr(strTest);
> p->get_getbstr((unsigned short**)&strTest);
>
> 直接、文字列を渡すと結果は帰ってくるのですが、変数(strTest)を
> 渡すと正常結果が得られません。
CString <---> BSTR を変換する必要があります。
CString->BSTR
CString::AllocSysString
BSTR->CString
AfxBSTR2CString
http://www.geocities.co.jp/SiliconValley/4809/mfc/mfc0600.html