開発環境は、WinXP、VC7です。
独自のCListCtrlにフォルダを登録し、そこにExplorerからの
ドラッグアンドドロップを受け付けるソフトを作っています。
COleDropTargetをRegistして、OnDragEnterとOnDragOverを
実装しようとしています。
ExplorerでドラッグされたファイルがCドライブのファイルだった場合、
CドライブのフォルダではDROPEFFECT_MOVE、
Cドライブ以外のフォルダではDROPEFFECT_COPYを戻すようにしたいのですが、
その判定はどのように行うのでしょうか?
また、マイコンピュータがExplorerからドラッグされた場合は、
DROPEFFECT_LINKにしているようですが、
この判定もどのように行うのでしょうか?
どこか参考になるサイトなどがございましたら、
是非教えてください。
よろしくお願いします。
http://msdn.microsoft.com/library/en-
us/shellcc/platform/shell/programmersguide/shell_basics/shell_basics_programmin
g/transferring/transfer.asp
このあたりが参考になると思います。
Kerry様、レスありがとうございます。
もう少し教えていただけないでしょうか?
OnDragOver()がコールバックされたときの
DROPEFFECT_MOVEかDROPEFFECT_COPYかの
判定についての記述が読み取れませんでした。
COleDataObjectのEnumFormatEtc()で
ドラッグされているオブジェクトに関する
情報は取得できますが、
ドロップ先の情報とどう絡めていくかが
わかりません。
ドロップ先は、独自のCListCtrlのアイコンに
フルパスのLPITEMIDLISTを持たせていますので
IShellFolderも取得できます。
よろしくお願いします。
Kerry様
よく読んだところ、できました。
ありがとうございました。