我有一个应用程序与一个文件和文件夹列表控件,它支持拖动&拖放操作。现在我想让用户能够将Windows 7资料库(例如音乐,图片等)放入此控件中。Win7拖放:可能找出COleDataObject是否包含shell库?
在我的拖放处理程序中,我有一个COleDataObject
,现在我试图找出,如果一个库已被放入控件。由于对象似乎不包含标准格式(例如CF_HDROP
),因此我使用COleDataObject::BeginEnumFormats
和COleDataObject::GetNextFormat
来枚举数据对象中的格式。我总共获得了5种不同的FORMATETC结构。
这里的个体结构的FORMATETC.cfFormat
和FORMATETC.tymed
成员名单:
- cfFormat = 0xc0a5,TYMED =为0x1
- cfFormat = 0xc418,TYMED =为0x1
- cfFormat = 0xc410,TYMED =为0x1
- cfFormat = 0xc0fd,TYMED =为0x4
- cfFormat = 0xc0fc,TYMED =为0x1
任何人都可以告诉我,如果他们其中之一是指向一个shell库,如果是这样,我将如何能够确定这个库的解析名称?这些cfFormat值是否可能记录在某处?
最好的问候,
humbagumba
是的......读一点,似乎我必须先注册其中一个shell剪贴板格式,然后才能在我的应用程序中使用它们。现在的问题是,哪种格式是正确的?我想我会尝试CFSTR_SHELLIDLIST第一..但当然,如果有人会知道这里的确切程序,我将不胜感激:) – humbagumba 2010-07-02 14:17:06
我想通了。但是,无论如何,要指出我在正确的方向:) – humbagumba 2010-07-02 19:11:46