高手帮忙!windows shell接口编程,关于BindToObject和IExtractImage.
这个程序的目的是要得到一个文件的IExtractImage接口,然后
取得它的缩略图。但是到了GetUIObjectOf就写不下去了老是出错,请各位大虾帮我看看吧!
IShellFolder * mf ;
IShellFolder * folder ;
IExtractImage * extractImage ;
LPITEMIDLIST pidl ;
unsigned long * char_len = new unsigned long();
OleCheck(SHGetDesktopFolder(&mf)) ;
if( !OpenDialog1->Execute())
{
ShowMessage("打开文件失败!") ;
return ;
}
LPOLESTR * dispName ;
AnsiString path = ExtractFilePath(OpenDialog1->FileName) ;
wchar_t * n = new wchar_t[50];
path.WideChar( n , path.Length() + 1) ;
dispName = & n ;
//问题一:下边这句,如果用LPITEMIDLIST * pidl这种方式声明pidl,在下句
//中把& pidl 换成pidl,程序就会出错。为什么呢?
OleCheck(mf->ParseDisplayName( this, NULL, * dispName , char_len , & pidl , 0 ));
LPVOID ppvResult ;
LPVOID un ;
OleCheck( mf->BindToObject( (LPCITEMIDLIST)( pidl) , NULL , IID_IShellFolder , & ppvResult ) );
folder =(IShellFolder*) ( ppvResult ) ;
//问题二:执行到下句就出错:“参数错误”
OleCheck( folder->GetUIObjectOf(NULL , 1 , (LPCITEMIDLIST *)&pidl , IID_IExtractImage , NULL , & un ) ) ;
extractImage = (IExtractImage *) (&un) ;
//问题三:以下还要通过IExtractImage::GetLocation()和IExtractImage::Extract
//得到我要的缩略图,但我实在写不下去了,请高手帮帮忙吧!
delete [] n ;