Last Updated 2004/10/21
Programming Tips Visual C++ MFC ドラッグアンドドロップ  索 引 
DoDragDrop()の指定ミリ秒を無視
2004/10/21

COleDataSource にてドラッグ&ドロップを実装する.
DoDragDrop() の第2引数 LPCRECT lpRectStartDrag に NULL を与える.
そうすればマウスカーソルが1ピクセル動くか指定したミリ秒経過するかでドラッグ操作が始まる.

このミリ秒経過を無視させる.(マウスカーソルが動くまでドラッグ操作をさせない)

COleDropSource から派生させたクラスを DoDragDrop() の第3引数に渡す.
派生クラスの OnBeginDrag() をオーバーライドする.
( mfc\src\OleDrop1.cppのCOleDropSource::OnBeginDrag() をそのまま引用する)
COleDropSource::OnBeginDrag() の以下の部分をコメントにする.

    // if the user sits here long enough, we eventually start the drag
    if (GetTickCount() - dwLastTick > nDragDelay)
        m_bDragStarted = TRUE;

これでマウスが動くまでドラッグできない.
(ミリ秒経過は無視される)


参照
ファイルのドロップ
ファイル以外のドロップ
ドラッグ中のイメージ
前後のTips
DoDragDrop()の指定ミリ秒を無視

DSS ProgrammingTipsCGI Ver2.01