2014/08 にやった内容をもう一度.
新しくダイアログベースのプロジェクトを作成して,CXxxxDlg::OnMouseMove を追加.
{
if (nFlags == MK_LBUTTON) {
// ここにコードを貼り付け
}
// ...
}
そのまま実行させると,ods->DoDragDrop() がすぐに抜けてしまう.
AfxOleInit() の呼び出しが必要で,CXxxxApp::InitInstance() の先頭に次の様なコードを追加.
{
// OLE ライブラリの初期化
if ( !AfxOleInit() ) {
AfxMessageBox(_T("OLE の初期化に失敗")) ;
return FALSE ;
}
}
これで,前回と同じ様な動作となる.
ドロップ先がエクスプローラなどだと「移動」になる(元ファイルがなくなる)ことがあるので DROPEFFECT_COPY に.
ods->DoDragDrop ( DROPEFFECT_COPY ) ;
また,delete ods でなく InternalRelease() に.
ods->InternalRelease() ;
[…] COleDataSource での Drag […]