安插ole对象时选择从文件插入并以图标显示,但是某些图标不能正常显示

插入ole对象时选择从文件插入并以图标显示,但是某些图标不能正常显示
我写的程序可以插入ole对象,但是从文件插入对象并以图标方式显示时,某些图标不能正常显示。而word从文件插入对象图标可以正常显示可以随意更改。
有高手知道这是为什么吗?



安插ole对象时选择从文件插入并以图标显示,但是某些图标不能正常显示

------解决方案--------------------
你可以尝试直接读取文件中的资源,像读取EXE文件资源那样
------解决方案--------------------
更改 Icon 的方法 (需加上MFC ATL支持)

bool ChangeIconicMetafile( IUnknown* pObject ,HGLOBAL hMetaPict)
{
CComQIPtr<IOleCache> pCache(pObject);

if( pCache == NULL )
    return false;

FORMATETC Etc;
Etc.cfFormat = CF_METAFILEPICT;
Etc.ptd = NULL;
Etc.dwAspect = DVASPECT_ICON;
Etc.lindex = -1;
Etc.tymed = TYMED_MFPICT;

DWORD dwConnection;
SCODE sc = pCache->Cache(&Etc,
ADVF_NODATA
------解决方案--------------------
ADVF_PRIMEFIRST
------解决方案--------------------
ADVF_ONLYONCE, &dwConnection);
if (FAILED(sc))
return false;

        if( hMetaPict != NULL)
{
STGMEDIUM stgMedium;
stgMedium.tymed = TYMED_MFPICT;
stgMedium.hGlobal = hMetaPict;
stgMedium.pUnkForRelease = NULL;

sc = pCache>SetData(&Etc, &stgMedium, FALSE);
if (FAILED(sc))
{
return FALSE;
}
                return true;
}