エクスプローラからファイルをドラッグ&ドロップ



【処理手順】

  1.ウインドウ初期化時にファイルのドラッグ ドロップを許可

        呼び出すメソッド : DragAcceptFiles

  2.メッセージハンドラを設定(ClassWizardを使用)

    設定するメッセージ : WM_DROPFILES

  3.2で作成されたOnDropFiles(HDROP hDropInfo)に必要な処理を記述


【サンプル】

//初期化用メソッド
BOOL CFiledragdropDlg::OnInitDialog()
{
    CDialog::OnInitDialog();

    // "バージョン情報..." メニュー項目をシステム メニューへ追加します。

    // IDM_ABOUTBOX はコマンド メニューの範囲でなければなりません。
    ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
    ASSERT(IDM_ABOUTBOX < 0xF000);

    CMenu* pSysMenu = GetSystemMenu(FALSE);
    if (pSysMenu != NULL)
    {
        CString strAboutMenu;
        strAboutMenu.LoadString(IDS_ABOUTBOX);
        if (!strAboutMenu.IsEmpty())
        {
            pSysMenu->AppendMenu(MF_SEPARATOR);
            pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
        }
    }

    // このダイアログ用のアイコンを設定します。フレームワークはアプリケーションのメイン
    // ウィンドウがダイアログでない時は自動的に設定しません。
    SetIcon(m_hIcon, TRUE);            // 大きいアイコンを設定
    SetIcon(m_hIcon, FALSE);        // 小さいアイコンを設定
    
    // TODO: 特別な初期化を行う時はこの場所に追加してください。

  //追加コード--------------------------------------↓
    //ファイルのドラッグ ドロップを許可
    CDialog::DragAcceptFiles(TRUE);
  //------------------------------------------------↑
    
    return TRUE;  // TRUE を返すとコントロールに設定したフォーカスは失われません。
}


//--------------------------------------------------------------------
//ファイルをドラッグ ドロップするためのWindowメッセージハンドラ
//(WM_DROPFILES)が呼び出すメソッド
void CFiledragdropDlg::OnDropFiles(HDROP hDropInfo) 
{
    
    char buf[MAX_PATH];

    if(DragQueryFile(hDropInfo, 0, buf, sizeof(buf))){

        m_ed1.SetWindowText(buf);

    }

    CDialog::OnDropFiles(hDropInfo);
}