リストコントロール上のマウス – プログラミング – Home

リストコントロール上のマウス
 
通知
すべてクリア

リストコントロール上のマウス


fix
 fix
(@fix)
ゲスト
結合: 16年前
投稿: 3
Topic starter  

環境 VS2005 XP

ダイアログベースで開発していますが、
リストコントロール上でのマウスの操作(リスト選択、ドラッグ&ドロップ)
でリストをソートさせたいと思っています。

ダイアログベースですが、メッセージループを作って
MOUSEMOVEのメッセージを拾えるようにするのでしょうか?

実装方法がわからないので教えてください。
よろしくお願いします。


引用解決済
トピックタグ
仲澤@失業者
(@uncle_kei)
Prominent Member
結合: 5年前
投稿: 828
 

ソートは目的で、選択した行を同じコントロール上の別の位置に
Drag&Dropで移動したいということですね(確認)。

MFCの場合なら、リストからのノティファイであるLVN_BIGINDRAG
に応答したり、OnDropをオーバーライドする方法が一般的です。
ドロップ先が同じコントロールであれば、クリップボードも
使用する必要はありません。
選択中の行のリストを得るには
CListCtrl::GetNextItem()
を使います。

とりあえず、とっかかりだけ。


返信引用
fix
 fix
(@fix)
ゲスト
結合: 16年前
投稿: 3
Topic starter  

大変参考になりました。
なにかみえてきました。
ありがとうございます。


返信引用
fix
 fix
(@fix)
ゲスト
結合: 16年前
投稿: 3
Topic starter  

リストコントロール上のドラッグ&ドロップでドラッグ中も
ドラッグされているものを描画しようと考えています(dragmove)

リストコントロールの1行目をドラッグ&ドロップするとうまくいくのですが、
2行目以降の行を選択するとドラッグ中に黒い長方形(リストの1行分の幅)が
ドラッグ中に描画されます。
また、2行目以降は黒い長方形の描画位置が1行目をドラッグするときの位置に
なってしまいます。

1行目だけは意図したとおりの動作ができるのですが、2行目以降は上記のように
なってしまします。

APIはエラーを返さないのでどこが問題なのかわかりません。

流れ的には
CreateDragImage
Begin
Drag
DragEnter
DragMove
DragLeave
EndDrag


返信引用
ねむねむ
 ねむねむ
(@ねむねむ)
ゲスト
結合: 18年前
投稿: 7
 

エラーの内容を読む限りでは
CreateDragImageを呼ぶ際の引数が間違っているかCImageListの削除忘れかと思います。
描画位置はDragEnter、DragMoveで値がちゃんと渡せてないかもです。

一部でもソースをあげてもらえるなら皆が教えやすいかと。。。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました