初めまして。
serioと申します。
WinNT、VC++6.0、SP5で開発しております。
私は今ダイアログの初期表示で、ネットワークコンピュータのコンピュータまでは取得出来てい
ます。しかし、そのコンピュータを指定して表示する事が出来ません。
四日間くらい悩んでいます。
下にソースを載せますので、回答をお願いします。
調べた範囲では
iLength = ::WideCharToMultiByte(CP_OEMCP, WC_DEFAULTCHAR,
p_pStrret->pOleStr, -1, NULL, 0, NULL, NULL);
の辺りが怪しいのでは?と思っています。
何卒お願いします。
LPITEMIDLIST CFile2Dlg::GetItemIDList( CString p_cFileStr )
{
if( p_cFileStr.IsEmpty() )
return NULL;
LPITEMIDLIST pIDL;
LPSHELLFOLDER pDesktopFolder;
if( ::SHGetDesktopFolder( &pDesktopFolder ) != NOERROR )
return NULL;
OLECHAR ochPath[MAX_PATH];
ULONG chEaten; //文字列のサイズを受け取ります。
ULONG dwAttributes; //属性を受け取ります。
HRESULT hRes;
// これをしないとインターフェイスはダメなのです。
::MultiByteToWideChar( CP_ACP, MB_PRECOMPOSED, p_cFileStr, -1,
ochPath, MAX_PATH );
// 実際にITEMIDLISTを取得します。
hRes = pDesktopFolder->ParseDisplayName( NULL, NULL, ochPath,
&chEaten, &pIDL, &dwAttributes);
if( hRes != NOERROR )
pIDL = NULL;
pDesktopFolder->Release();
return pIDL;
}
>iLength = ::WideCharToMultiByte(CP_OEMCP, WC_DEFAULTCHAR,
> p_pStrret->pOleStr, -1, NULL, 0, NULL, NULL);
>の辺りが怪しいのでは?と思っています。
その辺りを載せましょう。
なんのことか分かりません。
ダイアログ初期表示とどこが関係あるのですか
>私は今ダイアログの初期表示で、ネットワークコンピュータのコンピュータまでは取得出来て
い
>ます。しかし、そのコンピュータを指定して表示する事が出来ません。
何を表示できないの?
何かを取得できないの間違いではないですか?
(フォルダ リストとか)
相手が共有化されていないとか、ログイン可能になっていないとか
この辺は、大丈夫なのですか
とおりすがり さんがご指摘のとおり
>LPITEMIDLIST CFile2Dlg::GetItemIDList( CString p_cFileStr )
の中にはそれらしいコーディングありませんけど、どこのことが怪しいんでしょうか?
説明不足、説明下手で申し訳ありませんでした。
iLength = ::WideCharToMultiByte(CP_OEMCP, WC_DEFAULTCHAR,
p_pStrret->pOleStr, -1, NULL, 0, NULL, NULL);
で、iLength = 0 の値が返って来ていたので、おかしいのでは?と思った次第です。
二番目の引数を“WC_COMPOSITECHECK”に変えたら上手く行きました。
WC_DEFAULTCHAR 変換時、例外を既定の文字に置き換えます。
WC_COMPOSITECHECK 合成文字を構成済み文字に変換します。
