rai002 @ ウィキ

WINAPI:ドラッグアンドドロップ

最終更新:

rai002

- view
管理者のみ編集可

WINAPI:ドラッグアンドドロップ


ヘッダー

shellapi.h
windows.hをインクルード時は多分要らない

メッセージ

WM_DROPFILES

初期

VOID DragAcceptFiles(
    HWND hWnd,   //ウィンドウのハンドル
    BOOL fAccept //受け入れの有無
);

hWnd
	ドラッグアンドドロップを受け入れるかどうか設定するべきウィンドウのハンドルを指定します。
fAccept
	hWnd パラメータで指定されたウィンドウが、ドロップされたファイルを受け入れるかどうかを
	指定します。TRUE を指定すると、ファイルを受け入れます。FALSE を指定すると、ファイルを受け入れません。


基本的に利用

UINT DragQueryFile(
    HDROP hDrop,     //ファイル名構造体のハンドル
    UINT iFile,      //ファイルのインデックス番号
    LPTSTR lpszFile, //ファイル名を格納するバッファ
    UINT cch         //バッファのサイズ
);

hDrop
	ドロップされた複数のファイルの名前を保持している、1 個の内部構造体のハンドルを指定します。
iFile
	問い合わせ対象のファイルのインデックス番号を指定します。
	0xFFFFFFFF(言い換えると -1)を指定すると、DragQueryFile は、ドロップされたファイルの総数を返します。
	0~ドロップされたファイルの総数未満のいずれかの値を指定すると、
	DragQueryFile は、lpszFile パラメータが指すバッファに、その値に対応するファイルの名前を格納します。
lpszFile
	1 個のバッファへのポインタを指定します。関数から制御が返ると、このバッファに、
	ドロップされた特定のファイルの名前が格納されます。NULL を指定すると、
	DragQueryFile は必要なバッファのサイズを文字単位で返します。
cch
	lpszFile が指すバッファのサイズを文字単位で指定します。
戻り値
	関数がバッファにファイル名を格納すると、格納した文字数が返ります。
	終端の NULL 文字は、文字数に含まれません。
	iFile パラメータで 0xFFFFFFFF(-1)を指定した場合、
	ドラッグアンドドロップされたファイルの総数が返ります。
	iFile パラメータで、0~ドロップされたファイルの総数未満の値を指定し、
	さらに lpszFile パラメータで NULL を指定した場合、ファイル名を格納するために必要な
	バッファのサイズが文字単位で返ります。終端の NULL 文字は、文字数に含まれません。


ドロップファイルと位置

BOOL DragQueryPoint(
    HDROP hDrop, //ファイル名構造体のハンドル
    LPPOINT lppt //マウスカーソルの位置
);

hDrop
	ドロップされたファイルを表す内部データ構造体を操作するためのハンドルを指定します。
	この値は WM_DROPFILES メッセージの wParam パラメータにあたります。
ppt
	ドロップされたときのマウスポインタの位置を格納するための POINT 構造体のアドレスを指定します。


開放の宣言

VOID DragFinish(
    HDROP hDrop //ファイル名構造体のハンドル
);

hDrop
	ドロップされたファイルについて記述している内部構造体のハンドルを指定します。
	このハンドルは、WM_DROPFILESメッセージの wParam パラメータから取得できます

参考URL:
独学プログラミング言語のページ > Win32API(C言語,C++) > DragAcceptFiles
 http://www.monmon-dance.com/win32api/dragacceptfiles.html
MSDN
ウィキ募集バナー