ドラッグ中のコピーマーク

[戻る]
tic 2004/10/29(金) 12:06:10
はじめまして。初心者の tic と申します。

早速ですが、現在エクスプローラ風のアプリケーションを作成中です。
エクスプローラでは、ドラッグ中に Ctrl を押すと、カーソルの右下にコピーマーク(?)
が出ますよね。

コピーを作成する動作は実装できたのですが、カーソルの変え方がわかりません。
SetCursor と LoadCursor でできると思ったのですが、望むものを見つけられませんで
した。

どなたか御存知の方いらっしゃいましたら教えて下さい。
よろしくお願いします。

環境 Windows XP(SP1), VC++ 6.0,  MFC

らふ 2004/10/29(金) 13:18:50
ドロップしたい先が CView 派生クラスなら OnDrop〜 関数をオーバーライドして
適切な戻り値( +をつけたいなら DROPEFFECT_COPY )を返すようにすればできます。

それ以外の場合、ドロップ先ウィンドウに COleDropTarget 派生クラスを Register() で
結びつけ、その OnDrop〜 関数で適切な戻り値を返すようにすればOKです。

自分で作成した任意のカーソルを表示させたい場合はどうすればよいのかはわかりませ
ん。

dairygoods 2004/10/29(金) 14:37:51
> 自分で作成した任意のカーソルを表示させたい場合はどうすればよいのかはわかりませ
> ん。

カーソルを設定するのは、ドロップする側の仕事で、
COleDropSource::GiveFeedback() をオーバーライドすれば可能のようです。

tic 2004/10/29(金) 19:16:09
[[解決]]
らふさん、dairygoodsさん、レスありがとうございます。

 > ドロップしたい先が CView 派生クラスなら OnDrop〜 関数をオーバーライドして
 > 適切な戻り値( +をつけたいなら DROPEFFECT_COPY )を返すようにすればできます。

らふさんの↑のやり方で無事できました。

ありがとうございました。

古いスレッドには追加発言できません。