我有一個應用程序與一個文件和文件夾列表控件,它支持拖動&拖放操作。現在我想讓用戶能夠將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