私はあまりにも長い間、単純な機能のように聞こえるものに取り組んできました。アイデアは、私は TreeView を持つアプリケーションを持っているということです。このツリービューは、Windows エクスプローラーと同様に、ファイルとフォルダーに編成されたデータベースの内容を表します。したがって、ユーザーがこれらのファイル/フォルダーをアプリから Windows エクスプローラーにドラッグできるようにすることは理にかなっています。
IStream
ファイルをドラッグする場合は を使用するかIStorage
、フォルダーをドラッグする場合は を使用することにしました。非常に長い時間をかけて、Win32/COM について知りたいと思っていた以上のことを学んだ後 (そして、ここで非常に親切な人からの助言を受けて)、ついにそれを手に入れた、IStream
またはIStorage
作成しました。
次に、これを Windows エクスプローラーに渡しIStream
たり、オフにしたりするには、 . もちろん、 medium.tymed は、どちらを使用しているかに応じて または になりますが、私が理解しているように、は へのポインターでなければなりません。IStorage
STGMEDIUM
IStream
IStorage
medium.unionmember
IStream/IStorage
私は固定されたキーワードを使用してみました(もちろん、それはblittableではありません)、爆破されたものをバイト配列に変換しようとしましたが、それを実現する方法を思いつくことができませんでした。 GCHandle を使用して固定する (ただし、まだ blittable ではありません)、および機能しなかった他のいくつかのこと。
私の質問は次のとおりです: と が与えられIStorage s
た場合、Windows エクスプローラーが満足してドロップを受け入れるようにするSTGMEDIUM m
にはどうすればよいですか?m.unionmember