エディットコントロールへファイルのドロップするには WM_DROPFILES ハンドラを作成する.
エディットコントロールにドロップしたファイル名を表示するには以下の様にする.
(CEdit クラスを CDropEdit クラスとして派生させる)
BEGIN_MESSAGE_MAP(CDropEdit, CEdit)
//{{AFX_MSG_MAP(CDropEdit)
ON_WM_DROPFILES()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDropEdit メッセージ ハンドラ
void CDropEdit::OnDropFiles(HDROP hDropInfo)
{
// TODO: この位置にメッセージ ハンドラ用のコードを追加するかまたはデフォルトの処理を呼び出してください
UINT uiFiles; // ドロップファイル数
UINT uiSize; // ファイル名サイズ
LPTSTR pStr; // 文字列
// ドロップされたファイル数を取得
uiFiles = DragQueryFile(hDropInfo, 0xFFFFFFFF, NULL, 0);
if( uiFiles != 1 ) return;
uiSize = DragQueryFile(hDropInfo, 0, NULL, 0);
pStr = new char[uiSize + 1];
DragQueryFile(hDropInfo, 0, pStr, uiSize + 1);
SetWindowText(pStr);
delete[] pStr;
CEdit::OnDropFiles(hDropInfo);
}
参照
ファイルのドロップ
ファイル以外のドロップ
リッチエディットへのドラッグ&ドロップ