Last Updated 2004/10/19
Programming Tips Visual C++ MFC OLE  索 引 
OLEドロップでのファイル名取得
2004/10/19

ファイルのドロップを受け入れるためにメインフレームは DragAcceptFiles() する.

他のアプリケーションからドロップを受け入れる為に,OLE を使用する.
ビューなどで受け入れるには OnCreate() で COleDropTarget::Register(this) を呼び出し,OnDragEnter(), OnDragOver(), OnDragLeave(), OnDrop() 等を使用すればテキストのドロップを処理することができる.

しかし,ドロップターゲットに登録したビューが存在すると,ファイルのドロップが処理できない.(ビューの OnDrop() が呼ばれてしまう)

OLE で処理する時にファイル名を取得することが可能なのか?

ファイルのドロップならば,CF_HDROP 形式でファイル名を取得できる.
OnDrop() の引数の COleDataObject* pDataObject を使って以下のようにする.

STGMEDIUM st;
char strFile[MAX_PATH];

pDataObject->GetData( CF_HDROP , &st );
DragQueryFile( (HDROP)st.hGlobal , 0 , strFile , MAX_PATH );


strFile にファイルのフルパスがが格納される.


参照
前後のTips
OLEドロップでのファイル名取得

DSS ProgrammingTipsCGI Ver2.02