关于vista 下的编程问题,望各位高手关注下,附原代码。也请袁大哥进来帮忙看下,Thanks

kingstar568 2006-10-30 09:47:29
是这样的,我们想给一种新得文件格式给予缩略图,原先在vista之前一般用IExtractImage 来实现,在vista下出现新得结构IThumbnailProvider. 我们想用新接口来实现这一功能,但是程序中的Initialize始终不被调用。想问下
1,是否与原来的IExtractImage实现方式有所不同?
2,注册表修改的信息是否与原来的有所不同?
代码如下:

///////////////////////////////////NewThumbnail.cpp////////////////////////////////////
HRESULT CCNewThumbnail::Initialize( IStream *pStream,DWORD grfMode)
{
//这个函数没有被调用。导致GetThumbnail没被初始化。
return S_OK;
}
HRESULT CCNewThumbnail::GetThumbnail(UINT cx,HBITMAP *phbmp,WTS_ALPHATYPE *pdwAlpha)
{

*phbmp = ::LoadBitmap(NULL,MAKEINTRESOURCE(IDB_BITMAP));
*pdwAlpha = WTSAT_ARGB;

return S_OK;
}
HRESULT CCNewThumbnail::SetFocus(VOID)
{
return S_OK;
}
HRESULT CCNewThumbnail::QueryFocus(HWND *phwnd)
{
return S_OK;
}
HRESULT CCNewThumbnail::SetRect(const RECT *prc)
{
return S_OK;
}
HRESULT CCNewThumbnail::DoPreview()
{
return S_OK;
}
HRESULT CCNewThumbnail::Unload()
{
return S_OK;
}
HRESULT CCNewThumbnail::SetWindow(HWND hwnd,const RECT *prc)
{
return S_OK;
}
////////////////////////NewThumbnail.rgs////////////////////////////
HKCR
{
NewThumbnailTest.CNewThumbnail.1 = s 'CNewThumbnail Class'
{
CLSID = s '{F39D9D33-85D5-4AAA-9486-347B51B3792D}'
}
NewThumbnailTest.CNewThumbnail = s 'CNewThumbnail Class'
{
CLSID = s '{F39D9D33-85D5-4AAA-9486-347B51B3792D}'
CurVer = s 'NewThumbnailTest.CNewThumbnail.1'
}
NoRemove CLSID
{
ForceRemove {F39D9D33-85D5-4AAA-9486-347B51B3792D} = s 'CNewThumbnail Class'
{
ProgID = s 'NewThumbnailTest.CNewThumbnail.1'
VersionIndependentProgID = s 'NewThumbnailTest.CNewThumbnail'
ForceRemove 'Programmable'
InprocServer32 = s '%MODULE%'
{
val ThreadingModel = s 'Apartment'
}
val AppID = s '%APPID%'
'TypeLib' = s '{63B30B71-B44B-4265-B20F-7872A5F1D148}'
}
}
NoRemove .mm
{
PersistentHandler = s '{98DE59A0-D175-11CD-A7BD-00006B827D94}'

shellex
{
{8895b1c6-b41f-4c1c-a562-0d564250836f} = s '{F39D9D33-85D5-4AAA-9486-347B51B3792D}'
}
}
}
////////////////////////////////////////////////////////////////////////////////
问的地方不是很精确,往斑竹高抬贵手。只是这个问题比较急,跟microsoft联系也是象踢球一样踢来踢去的。有资料的提供点资料。
谢谢!
...全文
882 51 打赏 收藏 转发到动态 举报
写回复
用AI写文章
51 条回复
切换为时间正序
请发表友善的回复…
发表回复
fellowcheng 2006-11-07
  • 打赏
  • 举报
回复
解决就好
kingstar568 2006-11-07
  • 打赏
  • 举报
回复
问题解决了,我们下了vista RC2的sdk 上面的例子程序可以通过测试了。谢谢各位,下班前揭帖。
kingstar568 2006-11-02
  • 打赏
  • 举报
回复
上午试了下,还是不行。还是IInitializeWithStream 调不起来
lonerdo 2006-11-02
  • 打赏
  • 举报
回复
_V_ 2006-11-02
  • 打赏
  • 举报
回复
.........
kingstar568 2006-11-02
  • 打赏
  • 举报
回复
马山回来报告结果

----------
更正: 马上回来报告结果
kingstar568 2006-11-02
  • 打赏
  • 举报
回复
非常感谢crystal_heart(笑看风云) 提供的资料,我正在试。
马山回来报告结果
OracleRoob 2006-11-02
  • 打赏
  • 举报
回复
接分
kingstar568 2006-11-02
  • 打赏
  • 举报
回复
是的,的确如此。
谢谢你crystal_heart(笑看风云) 的关注跟提供的帮助
crystal_heart 2006-11-02
  • 打赏
  • 举报
回复
http://windowssdk.msdn.microsoft.com/en-us/library/aa361575.aspx

Registering Your Thumbnail Provider
Registration of a thumbnail provider is based on standard file associations.

The GUID for the thumbnail handler Shell extension is E357FCCD-A995-4576-B01F-234630154E96.


看起来应该是在Shell extension做的东西,不是HKCR/.mm/shellex
Shell extension之前没有做过,你自己找多些资料吧。

Creating Shell Extension Handlers在这里有说明
http://windowssdk.msdn.microsoft.com/en-us/library/ms649575.aspx
ccccffff 2006-11-01
  • 打赏
  • 举报
回复
不懂
kingsang 2006-11-01
  • 打赏
  • 举报
回复
ding
icehouse 2006-11-01
  • 打赏
  • 举报
回复
up!
Bennyatt 2006-11-01
  • 打赏
  • 举报
回复
那个。。。。。。

vista 是个啥子东西呀??

现在开发工具太多了,我都没见过,摸都没摸过。。。

谁让我摸摸呀。。
zhenghaibingood 2006-11-01
  • 打赏
  • 举报
回复
xuexi学习
LinZhongBao 2006-11-01
  • 打赏
  • 举报
回复
o
zjysky 2006-11-01
  • 打赏
  • 举报
回复
这是什么东西啊,我怎么没见过
crystal_heart 2006-11-01
  • 打赏
  • 举报
回复
http://windowssdk.msdn.microsoft.com/en-us/library/aa361575.aspx


There are cases where initialization with streams is not possible. In scenarios where your thumbnail provider does not implement IInitializeWithStream, it must opt out of running in the isolated process where the system indexer places it by default when there is a change to the stream. To opt out of the process isolation feature, set the following registry value.


HKEY_CLASSES_ROOT
CLSID
{66742402-F9B9-11D1-A202-0000F81FEDEE}
DisableProcessIsolation= 1
If you implement IInitializeWithStream and do a stream-based initialization, your provider is more secure and reliable. Typically, disabling process isolation is only intended for legacy handlers; avoid disabling this feature for any new code. IInitializeWithStream should be the first choice whenever possible.
冰宇枫 2006-11-01
  • 打赏
  • 举报
回复
up
kingstar568 2006-11-01
  • 打赏
  • 举报
回复
头文件
// CCNewThumbnail

class ATL_NO_VTABLE CCNewThumbnail :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CCNewThumbnail, &CLSID_CNewThumbnail>,
public IDispatchImpl<ICNewThumbnail, &IID_ICNewThumbnail, &LIBID_NewThumbnailTestLib, /*wMajor =*/ 1, /*wMinor =*/ 0>,
public IInitializeWithStream,
//public IThumbnailProvider,
public IPreviewHandler
{
public:
CCNewThumbnail()
{
}

DECLARE_REGISTRY_RESOURCEID(IDR_CNEWTHUMBNAIL)


BEGIN_COM_MAP(CCNewThumbnail)
COM_INTERFACE_ENTRY(ICNewThumbnail)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY(IInitializeWithStream)
//COM_INTERFACE_ENTRY(IThumbnailProvider)
COM_INTERFACE_ENTRY(IPreviewHandler)
END_COM_MAP()



DECLARE_PROTECT_FINAL_CONSTRUCT()

HRESULT FinalConstruct()
{
return S_OK;
}

void FinalRelease()
{
}

public:
STDMETHOD (Initialize) ( IStream *pStream,DWORD grfMode);
//STDMETHOD (GetThumbnail) (UINT cx,HBITMAP *phbmp,WTS_ALPHATYPE *pdwAlpha);

STDMETHOD (DoPreview) (VOID);
STDMETHOD (QueryFocus) (HWND *phwnd);
STDMETHOD (SetFocus) (VOID);
STDMETHOD (SetRect) (const RECT *prc);
STDMETHOD (TranslateAccelerator) (MSG *pmsg) {return E_NOTIMPL;}
STDMETHOD (Unload) (void);
STDMETHOD (SetWindow) (HWND hwnd,const RECT *prc);
};

OBJECT_ENTRY_AUTO(__uuidof(CNewThumbnail), CCNewThumbnail)
加载更多回复(31)
内容概要:本文围绕2026年高教社杯全国大学生数学建模竞赛E题“SEM广告投放策略优化”展开研究,基于某互联网公司2025年约142万元的搜索引擎营销(SEM)投放数据,构建了从诊断、分类、优化到鲁棒决策的完整建模框架。研究首先通过多维度指标体系与对数线性假日效应回归模型分析投放效益的时间规律与结构性问题;继而提出成本—效益二维归一化分类方法,将关键词科学划分为黄金词、重点词、潜力词、问题词与无效词五类;在此基础上建立0-1整数规划模型,结合贪心算法与拉格朗日对偶定价求解预算约束下的最优投放策略;最后引入条件风险价值(CVaR)框架应对竞价与转化的不确定性,实现鲁棒优化。实证结果表明,优化策略显著降低单位注册成本,提升预算使用效率与展位质量。; 适合人群:具备数据分析与数学建模基础,对运筹优化、市场营销量化分析感兴趣的高校学生、数据分析师及互联网广告从业者。; 使用场景及目标:①应用于企业SEM广告投放策略的优化,实现预算约束下的转化最大化;②作为数学建模竞赛的参考案例,学习如何将实际商业问题转化为数学模型并求解;③掌握关键词分类、整数规划、鲁棒优化等方法在真实场景中的综合应用。; 阅读建议:此资源不仅提供了完整的建模思路与算法实现,还包含详细的策略对比与稳健性分析。读者应在理解模型原理的基础上,结合所提供的代码与数据进行复现与调试,重点关注分类逻辑、优化模型构建及不确定性处理方法,以深入掌握从问题分析到决策落地的全过程。
内容概要:本文围绕2026年高教社杯全国大学生数学建模竞赛D题“时频冲突检测与消解”展开,旨在通过提供数学建模、代码实现与论文写作的完整资源,帮助参赛学生系统性地解决时频冲突问题。文档不仅涵盖该赛题的技术背景与建模范式,还拓展至SEM广告投放、无线电干扰源定位、微网电力调控等相关赛题的建模思路与求解方法,强调数据分析、优化算法与模型鲁棒性的综合应用。文中整合了灰狼优化、粒子群算法、LSTM-Attention等多种智能算法在实际工程问题中的建模实践,并配套提供MATLAB/Python代码支持,便于读者复现、验证与拓展研究成果。资源体系注重从问题分析、模型构建到算法实现与结果可视化的全流程技术贯通,助力提升建模实战能力。; 适合人群:全国大学生数学建模竞赛参赛者,具备一定数学建模、编程基础(MATLAB/Python)和优化理论知识的本科或研究生层次学生。; 使用场景及目标:①辅助完成数学建模竞赛中的问题分析、模型构建与算法实现;②学习如何将智能优化算法与实际工程问题(如信号冲突、广告投放、电力调度)相结合;③掌握从数据处理、模型求解到结果可视化的全流程技术路径; 阅读建议:建议读者结合提供的网盘资源(代码、论文模板、参考文献)同步学习,重点关注模型构建逻辑与算法实现细节,优先掌握某一类问题的完整解决方案后再横向拓展至其他赛题,以提升综合建模能力。

703

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧