ホーム » MFC » COleDataSource での Drag

COleDataSource での Drag

2014/08 にやった内容をもう一度.


当時,どこからからか拝借したコード.
CDragDlg::OnLButtonDown


新しくダイアログベースのプロジェクトを作成して,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() ;

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

1件のコメント

コメントは停止中です。